pytest 安装 a)安装 pip install pytest b)验证安装 pytest --version1、pytest的⽤例运⾏规则
1)pytest将在当前⽬录及其⼦⽬录中运⾏所有格式为test.py或者test.py⽂件 2)测试⽅法/测试函数 默认必须是test开头 3) 测试类必须是Test开头 4) 测试类不能有构造⽅法 init,会影响用例的收集2、pytest常⽤运⾏参数
"-s" 参数 ⽤于关闭捕捉,从⽽输出打印信息到控制台,如果不输入【-s】,测试报告中会捕捉打印信息,输入后不再捕捉打印信息 "-v" 参数 ⽤于显⽰具体的⽤例执⾏信息‘ “-k” 参数+用例名:运⾏名称中包含某字符串的测试⽤例 "-q"参数:简化输出信息 “-x” 参数: 如果出现⼀条测试⽤例失败,则退出测试 指定⽬录以及特定类或⽅法执⾏ pytest.main(['-s','./doc/test_112233.py::TestDemo::test_case_03'])
3、使用main运行的时候,是按照层级依次往下查找的,不会往上查找(***同一个目录下,最好只有一个main文件和用来执行框架***)
if __name__ == '__main__': pytest.main(['-s'])
图中这种层级,运行了4个同级的文件和一个下级test_112233.py文件,自动寻找Test_开头或者_Test结尾的类,和test_开头或_test结尾的方法/函数。
4、生成简单报告
pytest.main(['--junit-xml=./report/junit_report01.xml'])
5、执行失败控制
# 用例失败控制 # pytest.main(['--maxfail=1']) # 执行的时候最大失败次数为1,失败1条就停止运行。
6、通过标记表达式取执行,
通常用来版本控制,比如V1.0和V2.0版本的用例在一个文件中,只想执行V2.0的时候,表达式取V2.0
先在项目中建立一个简单文件,命名为pytest.ini 的配置文件。写入一些信息。如下:
(***同一个目录下,最好只有一个main文件和pytest.ini用来执行框架***)
[pytest] markers = smoke: marks tests as smoke slow happy serial
然后在脚本文件的用例前加装饰器
然后执行,用标记表达式执行
# pytest.main(['-m', 'smoke'])
7、指定.py文件执行
if __name__ == '__main__': pytest.main(['test_many.py']) # 直接填写[".py文件名"]
8、多线程执行
# 需要先安装对应插件 pytest-xdist: pip install pytest-xdist(不安装会报错)
# 将测试执行发送给多个CPU # pytest.main(['-n', '2', 'test_many.py']) # 使用与计算机具有CPU内核一样多的进程 # pytest.main(['-n', 'auto', 'test_many.py'])
9、失败重新运行用例
pytest-rerunfailures是⼀个可以使pytest重新运⾏测试的插件,以消除间歇性故障。 安装要求: 您需要具备以下先决条件才能使⽤pytest-rerunfailures: 安装:pip install pytest-rerunfailures Python 3.5,最⾼3.8或PyPy3 pytest 5.0或更⾼版本
if __name__ == '__main__': # 重新运行失败的用例,指定失败次数最大为3 # pytest.main(['--reruns', '3', 'test_rerun.py']) # 在每次失败重跑之前,增加一个延迟时间 pytest.main(['--reruns', '3', '--reruns-delay', '2', 'test_rerun.py'])
10、pytest的setup和teardown函数
***自动化中的用途,举例:比如setup用作用例执行前的数据处理,,teandown用来关闭浏览器***
不同的setup函数不要混用,在最新版本中,是不支持混用的 setup_module/teardown_module:在当前文件中,所有的用例执行之前执行 setup_function/teardown_function:在每个测试函数之前和之后执行 setup_method/teardown_method:在每个测试函数之前和之后执行(在类中每次都执行,在类的外面,只执行一次)# 在每个测试函数之前和之后执行(在类中每次都执行,在类的外面,只执行一次) 类的外面:setup和teardown只运行一次
类的里面:setup和teardown每次都执行
标签:__,执行,框架,py,pytest,test,main From: https://www.cnblogs.com/gezirui/p/17798527.html