介绍
pytest是一个非常流行的功能比较全的测试框架,它具有很多优点,例如简单易用、功能强大、可扩展性好等。使用pytest可以让开发者更方便地进行自动化测试,提高代码的质量和可靠性,也可以说是unitest框架的升级版本。
特点
● 灵活简单、容易上手,文档丰富
● 支持参数化,可以控制要运行的测试用例
● 可以和request、selinium、appium结合做接口自动化和ui自动化
● 可以和第三方插件结合使用,比如测试报告,allure
● 可以和ci工具结合,比如jenkins
环境安装
- 安装命令
pip install -U pytest
参数说明:
-U: 将指定的软件包升级至当前最新的可用版本
其他说明:
官网安装说明有加上-U参数,不加上-U参数亦可
- 检查版本
pytest --version
pytest常用插件
pytest-xdist 测试用例分布执行,多CPU运行分支
pytest-ordering 改变用例的执行顺序
pytest-rerunfailures 用例失败后重跑
pytest-html
allure-pytest 用于生成美观的测试报告
pip install -r requirements.txt
用法/命名规则
● 文件以test开头
● 类以Test开头,并且不能包含__init__函数(包含的话pytest认为这个类不是测试的类,不能运行用例)
● 函数以test开头
● 断言使用assert即可
运行
● 可以运行单个文件,多个文件,整个目录
● 可以关注运行的输出内容,用的比较多的是-vs,输出的报告数据比较全
● pytest.main(),测试用例通过的情况下,print不会打印出来,加上参数-vs可以在控制台看到输出
● 使用pytest框架后,一个用例失败不会影响另外一个用例
def __name__ == "__main__"
pytest.main(['-vs', '--alluredir', '../report/reportallure', '../test_case/test_cookies.py'])
-s:表示输出调式信息,包括print打印的信息
-v:显示更详细的信息,包含类名等
-vs
-rerunsNUM:失败重跑2次
-n:支持多线程或分布式用例
比如:pytest -vs ./testcase/test_login.py -n 2
-x:只要一个用例报错,就停止
-maxfail=2:出现两个失败用例就停止
-k:测试用例部分字符串指定测试用例执行
前提:按照顺序执行,需要导入pytest-ordering,测试用例前增加装饰器@pytest.mark.run(order=1)
比如:pytest -vs ./testcase -k “ao”
–html ./report/report.html
测试报告
os.system('allure generate ../report/allure -o ../report/html --clean')
pytest的pytest.ini
● pytest.ini文件是pytest的主配置文件;可以改变pytest的运行方式;它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行。
● pytest.ini文件的位置一般放在项目的根目录下。
● 查看pytest.ini文件的配置选项:cmd下执行 pytest -h 或者 pytest --help 可以查看配置选项
[pytest]
#命令行的参数,用空格分隔
addopts = -vs --reruns 2
; 测试用例的路径
testpaths = test_case
#模块名的规则
python_files = test_*.py
#类名的规则
python_classes = Test*
#方法名的规则
python_functions = test*
markers =
smoke:冒烟用例
smoke:冒烟用例,分布在各个模块里面
用例前@pytest.mark.smoke
pytest -vs -m “smoke or other”