pytest学习笔记(上)
前言:该笔记是我在B站上看视频做的一些笔记,自用和供大家在学习pytest时参考;由于内容比较多,分为上下两个部分。
一、pytest简介
特点:
1. pytest是-一个非常 成熟的python的单元框架,比uittest更灵活,容易上手。
2 pytest可以和selenium,requests , appium结合实现web自动化,接口自动化, ap自动化。
3. pytest可以实现测试用例的跳过以及reruns失败用例重试。
4 pytest可以和allure生成非常美观的测试报告。
5. pytest可以和Jenkins持续集成。
6. pytest有很多非常强大的插件,并且这些插件能够实现很多的实用的操作。
pytest基本包介绍
pytest-html ( 生成html格式的自动化测试报告)
pytest-xdist测试用例分布式执行。 多CPU分发。
pytest-ordering用于改变测试用例的执行顺序
pytest-rerunfailures用例失败后重跑
allure-pytest用于生成美观的测试报告。
一次性安装多个插件:
在项目文件中,新建一个txt文件,文件名为:requirements. txt,把需要安装的插件名称放到requirements. txt中,通过pip install -r requirements .txt命令进行安装。
检查一个插件是否安装成功:
输入命令:插件名 --version;如:pytest --version 若出现版本,就是安装成功
二、使用pytest ,默认的测试用例的规则以及基础应用
1.模块名必须以test_开头或者_ _test结尾
2.测试类必须以Test开头,并且不能有init方法。
3.测试方法必须以test开头
三、pytest测试用例的运行方式
1.主函数模式
(1)运行所有: pytest.main()
(2)指定模块: ipytest . main ( [ '-vs ' ,' test login.py' ] )
(3)指定目录: pytest. main(["-VS',' ./interface_testcase'])
(4)通过nodeid指定用例运行: nodeid由模块名,分隔符,类名,方法名,函数名组成。
pytest. main('-vs",'/interface_ testcase/test _interface. p.:test_ 04_ func'])
pytest main(["-vs','/interface_ _testcase/test_ _interface py:: Testlnterfac.:test 03_ zhiliao'])
2.命令行模式
(1)运行所有: pytest
(2)指定模块:pytest -vs test login.py
(3)指定目录: pytest -vs ./interface_testcase
(4)通过nodeid指定用例运行: nodeid由模块名,分隔符,类名,方法名,函数名组成。
Pytest -vs ./interface_ testcase/test _interface.py::test_ 04_ func
pytest -vs ./interface_ _testcase/test_ _interface py:: Testlnterfac::test 03_ zhiliao
3.通过读取pytest.ini配置文件运行
Pytest.ini这个文件它是pytest单元测试框架的核心配置文件。
1.位置:一般放在项目的根目录
2编码:必须是ANSI ,可以使用notpad++修改编码格式。
3.作用:改变pytest默认的行为。
4.运行的规则;不管是主函数的模式运行,命令行模式运行,都会去读取这个配置文件。
[pytest]
addopts = -vs #命令行的参数,用空格分隔
testpaths = ./testcase #测试用例的路径
python_ files = test_ _*. py #模块名的规则
python_ classes = Test* #类名的规则
python_ functions = test #方法名的规则
参数详解:
-S :表示输出调试信息,包括print打印的信息
-V :显示更详细的信息
-VS :这两个参数一起用
-n:代表多线程运行,支持多线程或者分布式运行测试用例
如: pytest -VS ./testcase/test _login.py -n 2
--reruns NUM :失败用例重跑
失败的case再跑几次命令,--reruns=2;命令行输入:--reruns 2
-x :表示只要要一个用例报错,那么测试停止
--maxfail=2出现两个用例失败就停止
-k :根据测试用例的部分字符串指定测试用例。
如: pytest -VS ./testcase -k “ao'
改变case执行顺序,用@pytest.mark.run(order=2)
--html ./reportreport. html :生成htm的测试报告
四、pytest执行测试用例的顺序是怎样的呢?
unittest:ascll的大小来绝对的执行的顺序
pytest:默认从上到下
改变默认的执行顺序:使用mark标记。
@pytest . mark. run (order=2)
注:需要安装order插件
五、如何分组执行(冒烟,分模块执行,分接口和web执行)
smoke :冒烟用例,分布在各个模块里面
pytest -VS -m "smoke'
pytest -VS -m "smoke or usermanage or 其他组名"