单元测试是指在软件开发当中,针对软件的最小单位(函数,方法)进行正确性的检查测试
单元测试框架主要做什么
为了完成指定的系统的自动化测试,来封装的一整套完善的代码的框架,主要封装一些自动化的基础模块,自动化的管理模块,包括自动化测试的统计模块
作用
pip install pytest
验证是否安装成功:pytest --version
1. 主函数模式
2. 命令行模式
以上两种方法可以运行所有用例,也可以运行部分用例
同样的,可以使用一个主文件来执行所有的测试用例
运行指定模块的运行:参数后面加入要指定运行模块的文件名
如果有多个测试文件夹,想要执行指定的文件夹:
通过nodeid制定用例执行:nodeid由模块名,分隔符,类名,方法名,函数组成。
比如执行某一个文件下的某一个方法或者某一个函数
方法要加类名用::隔开
参数详解:
-s :表示输出调试的信息,包括print打印的信息
-v:表示详情显示,测试的模块,类等
-n:支持多线程或者分布式运行测试用例,如下图,两个线程执行
–reruns=n:表示失败的重新跑n次
-x:表示只要有一个用例报错,测试停止
–maxfail=n:表示出现n个用例失败就停止
-k:表示执行含有指定字符串的用例
例如执行含有 “li” 的用例
pytest执行测试用例的顺序
pytest默认从上到下顺序执行
改变执行顺序:
@pytest.mark.run(order=n)
上面代码表示我想让某个用例排在第n个执行
3. 通过读取pytest.ini配置文件运行
pytest.ini这个文件它是pytest单元测试框架的核心配置文件
位置:一般放在项目的根目录
编码:必须为ANSI,可以使用notpad++修改编码格式
作用:可以改变pytest默认的行为
运行的规则:不管是主函数的模式运行,命令行模式运行,都会去读取这个配置文件
pytest.ini文件:
例如:testcase下有两个文件test_login和test_produce,那么我可以配置如下,只执行test_login文件
分组执行(冒烟,分模块执行,分接口和web执行)
smoke:冒烟用例,分布在各个模块里面
首先配置文件中:
在想要执行的用例前面加:@pytest.mark.smoke
再去执行,就会发现只执行了带有smoke标记的用例:
pytest -m “target1 or target2 or…”
执行有target1,target2…标记的用例
1. 无条件跳过
在想要跳过的用例前面加上@pytest.mark.skip(reason=“这里写上跳过的原因”)
2. 有条件跳过
pytest.mark.skip(skipreason,reason=“这里写上跳过的原因”)。命令中存在跳过的原因
1. html报告
一般会在项目工程中添加一个报告文件件,本例中加入report文件夹,生成的测试报告的文件名为report.html
就会在report文件下看到report.htm文件
浏览器打开后就是报告文件
2. pytest结合allure-pytest插件生成allure测试报告
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
下载allure
brew install allure
--alluredir ./file
allure generate
报告结果