pytest 基础
#模块以test_开头或者以_test结尾
#类名以Test开头
#方法以test开头
#运行方式
# 主函数运行
pytest.main([‘-s’,“指定运行的模块名(执行 )”])
运行所有: pytest.main()
指定模块: pytest.main([‘-s’,“指定运行的模块名.py”])
指定目录: pytest.main([‘-s’,“./用例模块目录”])
通过nodeid指定用例运行:
pytest.main([‘-vs’,‘./文件目录/文件模块.py::函数’,‘-n=2’])
pytest.main([‘-vs’,‘./文件目录/文件模块.py::类名::方法’])
# 命令行运行
-s : 表示输出调试信息,包括打印的信息
-v : 表示输出模块名,类名,用例名
-n : 支持多线程或者分布式运行
例: pytest -vs -n 2 --reruns=2
–reruns num : 表示失败重跑
-x : 表示有一个用例报错,就停止执行
–maxfail num :表示有num失败,就停止执行
-k : 表示根据测试用例函数名的部分字符串,执行用例
例: pytest -vs -k “ao”
-m : 表示分组
例: pytest -vs -m “smock or usermange” (or 或,and与)
用例分组需要通过装饰器进行分组
@pytest.mark.smock
@pytest.mark.usermange
–html : 表示生成HTML报告
pytest -vs
# 通过pytest.ini 方式进行运行
位置:放置在项目的根目录
编码格式 :ANSI
作用:改变pytest的默认格式
运行规则:不管是那种运行模式,都会
[pytest]
#命令行参数,用空格进行分开
addopts = -vs
#测试用例文件夹,可以自己配置
testpath =
#配置测试搜索的模块文件名称
python_files = test_.py
#配置测试搜索的测试类名
python_classes = Test
#配置测试搜索的测试函数名
python_functions = test
#分组执行
markers =
#执行测试用例的顺序
unittest Ascall码执行
pytest 默认顺序执行
@pytest.mark.run(order=1)
#如何分组执行(smock,分模块运行)
smoke 用例需要挑选部分用例执行
@pytest.mark.smock
@pytest.mark.usermange
#pytes跳过用例执行
#无条件跳过
@pytest.mark.skip(reason=‘msg’)
#有条件跳过
@pytest.mark.skip(name = ‘’,reason=‘msg’)
#生成测试报告
pytest --html ./report.html
#部分用例的前后置 fixtrue
scope 表示作用域,默认是 function 函数 class 类 module 模块 package/session 会话
params 数据驱动
autous 自动执行,为true 表示在执行用例前执行一次在所有用例执行完后再执行,只执行一次
ids
name 给fixtrue作用的函数重命名
#作用于方法上的前后置
@pytest.fixtrue(scope=“function”)
def exec_data():
print(“数据库查询,类似于前置”)
yield
print(“数据库校验,类似于后置”)
class TestMs:
def test_01(self,exec_data):
print(“执行exec_data后再执行该用例”)
#作用于类上,类下所有的方法都会使用该前后置方法
@pytest.fixtrue(scope=“class”)
def exec_data():
print(“数据库查询,类似于前置”)
yield
print(“数据库校验,类似于后置”)
@pytest.mark.usefixture