python单元测试之pytest的使用


Posted in Python onJune 07, 2021

一、前提准备

1、前提:需要安装pytest和pytest-html(生成html测试报告)

pip install pytest 和 pip install pytest-html 

安装插件:pip install 插件名

2、命名规范

 Pytest单元测试中的类名和方法名必须是以test开头,执行中只能找到test开头的类和方法,比unittest更加严谨

Pytest: setup, setup_class 和 teardown, teardown_class 函数 ( 和 unittest 执行效果一样 ) 运行于测试方法的始末,即 : 运行一次测试函数会运行一次 setup 和 teardown 运行于测试方法的始末 , 但是不管有多少测试函数都只执行一次 setup_class 和 teardown_class

二、pytest生成自带的html测试报告

前提条件:需要下载pytest-html模块(python自带的生成测试报告模块)

pip install pytest-html

如果不安装pytest-html会报:

python单元测试之pytest的使用

案例: 1)

pytest.main("模块.py")【运行指定模块下,运行所有test开头的类和测试用例】 

 pytest.main(["--html=./report.html","模块.py"])

import pytest
class Test():
    def test1(self):
        print("这是测试1")
    def test1(self):
        print("这是测试2")
if __name__ == '__main__':
    pytest.main(["--html=./report.html", "test_004.py"])

结果:

python单元测试之pytest的使用

python单元测试之pytest的使用

2)运行指定模块指定类指定用例,冒号分割,并生成测试报告

pytest.main([‘--html=./report.html',‘模块.py::类::test_a_001'])

import pytest
class Test():
    def test1(self):
        print("这是测试1")
    def test2(self):
        print("这是测试2")
if __name__ == '__main__':
    pytest.main(["--html=./report.html", "test_004.py::Test::test1"])

结果:

python单元测试之pytest的使用

3)直接执行pytest.main() 【自动查找当前目录下,以test 开头的文件或者以test结尾的py文件】

pytest.main([‘--html=./report.html'])

语句: pytst.main(['-x','--html=./report.html','t12est000.py'])

-x出现一条测试用例失败就退出测试
-s:显示print内容

三、pytest运行方式

. 点号,表示用例通过
F 表示失败 Failure
E 表示用例中存在异常 Error

四、allure  

Allure是一款轻量级并且非常灵活的开源测试报告框架。 它支持绝大多数测试框架, 例如TestNG、Pytest、JUint等。它简单易用,易于集成  

1、Allure常用的几个特性

@allure.feature # 用于描述被测试产品需求

@allure.story # 用于描述 feature 的用户场景,即测试需求

with allure.step (): # 用于描述测试步骤,将会输出到报告中

allure.attach # 用于向测试报告中输入一些附加的信息,通常是一些测试数据,截图等

案例1:关于pytest与Allure生成html测试用例 rr.csv

2,3,5
5,6,11

readCsv

import csv  # 导入csv模块
 
 
class ReadCsv():
    def read_csv(self):
        item = []  # 定义一个空列表
        c = csv.reader(open("../dataDemo/rr.csv", "r"))  # 得到csv文件对象
        for csv_i in c:
            item.append(csv_i)  # 将获取的数据添加到列表中
        return item
 
 
r = ReadCsv()
print(r.read_csv())

开发代码:

class Cale():
    def jia(self,a,b):
        c=a+b
        return c
    def jian(self,a,b):
        c=a-b
        return c
    def cheng(self,a,b):
        c=a*b
        return c
    def chu(self,a,b):
        c=a/b
        return c

生成html代码:

import pytest
from pytest01.readDemo.readCsv import ReadCsv
from pytest01.demo.cale import Cale
import os
import allure
r=ReadCsv()
cc=r.read_csv()
d=Cale()
class Test():
    @allure.story("加法函数测试正确")
    def test001(self):
        for i in cc:
            dd=d.jia(int(i[0]),int(i[1]))
            assert dd==int(i[2])
if __name__ == '__main__':
    pytest.main(['--alluredir', 'report/result', 'test_02.py'])
    split = 'allure ' + 'generate ' + './report/result ' + '-o ' + './report/html ' + '--clean'
    os.system(split)

python单元测试之pytest的使用

python单元测试之pytest的使用

到此这篇关于python单元测试之pytest的使用的文章就介绍到这了,更多相关pytest的使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python异步任务队列示例
Apr 01 Python
Python使用email模块对邮件进行编码和解码的实例教程
Jul 01 Python
快速了解Python开发中的cookie及简单代码示例
Jan 17 Python
Python绘制并保存指定大小图像的方法
Jan 10 Python
详解用Python实现自动化监控远程服务器
May 18 Python
Python scrapy增量爬取实例及实现过程解析
Dec 24 Python
Python实现银行账户资金交易管理系统
Jan 03 Python
python3代码中实现加法重载的实例
Dec 03 Python
详解Python中openpyxl模块基本用法
Feb 23 Python
关于python pygame游戏进行声音添加的技巧
Oct 24 Python
Pygame Time时间控制的具体使用详解
Nov 17 Python
Pandas搭配lambda组合使用详解
Jan 22 Python
Python趣味实战之手把手教你实现举牌小人生成器
怎么用Python识别手势数字
利用python调用摄像头的实例分析
Jun 07 #Python
python通过opencv调用摄像头操作实例分析
Jun 07 #Python
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
Jun 07 #Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
Jun 07 #Python
Pytorch中Softmax和LogSoftmax的使用详解
Jun 05 #Python
You might like
如何在PHP中使用Oracle数据库(6)
2006/10/09 PHP
php生成圆角图片的方法
2015/04/07 PHP
通过PHP简单实例介绍文件上传
2015/12/16 PHP
php中的登陆login实例代码
2016/06/20 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
javascript中的几个运算符
2007/06/29 Javascript
将list转换为json失败的原因
2013/12/17 Javascript
多选列表框动态添加,移动,删除,全选等操作的简单实例
2014/01/13 Javascript
textarea焦点的用法实现获取焦点清空失去焦点提示效果
2014/05/19 Javascript
详解AngularJS如何实现跨域请求
2016/08/22 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
Windows系统下安装Node.js的步骤图文详解
2016/11/15 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
小程序云开发实战小结
2018/10/25 Javascript
基于Node.js的大文件分片上传示例
2019/06/19 Javascript
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
VUE 实现element upload上传图片到阿里云
2020/08/12 Javascript
python中文件变化监控示例(watchdog)
2017/10/16 Python
Python 2.7中文显示与处理方法
2018/07/16 Python
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
python pandas库的安装和创建
2019/01/10 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
Pandas数据离散化原理及实例解析
2019/11/16 Python
CSS3实现超酷的黑猫警长首页
2016/04/26 HTML / CSS
CSS3 实现的加载动画
2020/12/07 HTML / CSS
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
美国领先的家庭健康检测试剂盒提供商:LetsGetChecked
2019/03/18 全球购物
英语翻译系毕业生求职信
2013/09/29 职场文书
质检部职责
2013/12/28 职场文书
团队口号大全
2014/06/06 职场文书
就业意向书
2014/07/29 职场文书
机关党员四风问题个人整改措施
2014/10/26 职场文书
升职感谢信
2015/01/22 职场文书
2015年国庆节活动总结
2015/03/23 职场文书