pytest使用整理
目录
pytest
常用插件(pip install 安装)
* pytest-html : 用于生成html格式的自动化测试报告
* pytest-xdist: 用于多线程执行用例的插件
* pytest-ordering:用于改变测试用例执行顺序
* pytest-rerunfailures:失败的用例重跑
* allure-pytest:用于生成allure报告
pytest默认规则
* 模块名必需以test_开头,或者_test结尾
* 测试类必须以Test开头,并且不能使用init的初始化方法
* 默认规则支持修改,可创建pytest.ini进行规则修改

pytest运行测试用例的方式
-
主函数模式
- pytest.main() :执行全部的用例
- pytest.main(['-vs']) :执行全部用例,显示用例的打印
- pytest.main(['./文件名']) :执行指定路径下的测试用例
- pytest.main(['./文件名/模块名::类名::函数名']) :执行指定的函数
- pytest.main(['-vs','./文件名']) :包含多个条件时,用逗号隔开

-
命令行模式
- pytest :执行全部的用例
- pytest -vs :执行全部用例,显示用例的打印
- pytest './文件名' :执行指定路径下的测试用例
- pytest. './文件名/模块名::类名::函数名'] :执行指定的函数
- pytest -vs './文件名' :包含多个条件时,用空格隔开
pytest执行参数
-s 表示输出调试的信息,包括函数里print打印
-v 显示更详细的信息
-vs 以上两个参数合并
-n 多线程运行,例如 -n 2 表示启动两个线程去执行用例
--renruns==num 失败用例重跑,当用例执行失败时,重新执行num次失败的用例
-x 表示只要有一个用例错了,测试停止
--maxfail=num 表示出现了num个用例报错时,测试停止
-k '字符' 执行带有标记字符的用例
-html 生成测试报告
-m '字符' 执行被‘字符’标记了的用例
pytest的运行顺序
- 自上而下的执行测试用例
- 按装饰器标记的顺序来执行:pytest@mark.run(order=num):标记后,以num的顺序执行,不同文件的用例也是按照这个标记执行
pytest的全局文件配置,pytest.ini
- pytest.ini 这个文件它是pytest单元测试框架的核心配置文件
- 位置:一般放在根目录
- 编码:必须是ANSI,可以使用notpad++修改编码格式
- 作用:改变pytest的默认配置规则
- 生效规则: 主函数运行和命令行模式运行,都会去读取生效这个配置文件
pytest.ini的内容
[pytest]
#命令行参数,用空格分离
addopts = -vs
#测试文件夹,支持自己配置
testpaths =
#配置测试搜索的模块文件名称
pytest_files=test_*.py
#配置测试搜索的测试类名
python_classes=Test*
#配置测试搜索的测试函数名
python_function=test
pytest 分组执行
在配置文件pytest.ini里添加
markers =
smoke : 冒烟用例
然后执行时,pytest -m“smoke”,就能实现只执行带有smoke装饰器的用例
pytest 跳过测试用例
- 无条件跳过
@pytest.mark.skip(reason=”文字说明”) - 有条件跳过
@pytest.mark.skipif(条件限制)
pytest 的前后置器
setup/teardown , setup_class/teardown_class
def setup(self) : 每个用例前都会执行
def terdown(self):每个用例执行结束后都会执行
setup_class:每个类执行前,只执行一次
Terdown_class:每个类型执行结束后都会执行
使用fixture装饰器来实现部分用例的前置和后置
@pytest.fixture(scope=””,params=””,autouse=””,ids=””,name=””)
-
scope表示的是被@pytest.fixture标记的方法作用域
- function(默认)
- class
- module
- package
- session
-
params : 参数(支持 列表、元组、列表字典、元组字典)
-
autouse=Ture: 自动执行,默认是False
-
ids : 当使用params参数化时,给每一个值设置一个变量名,意义不大
-
name:给被@pytest.fixture标记当方法一个别名
通过conftest.py 和 @pytest.fixture() 结合使用全局当前置应用
- conftest.py 文件是单独存放的一个夹具配置文件,名称不能改动
- 用处可以在不同的文件夹里使用
- conftest.py需要和运行的文件放置在同一文件夹
- 可放置在全局使用,然后和其他放置在组文件夹里的conftest.py的组合使用

本文来自博客园,作者:达克尼斯111,转载请注明原文链接:https://www.cnblogs.com/JKtest/p/15040905.html

浙公网安备 33010602011771号