【Pytest】框架基础 | 您所在的位置:网站首页 › pytest运行规则 › 【Pytest】框架基础 |
安装
前提:本地已配置完成python环境 pip install pytest 命名规则测试文件名:test_*或者*_test 测试类名:Test* 测试方法名:test_* 测试类中不加__init__构造函数 pytest解释器命令行运行方式pytest 文件名.py::类名/函数名::方法名 pytest test_a.py::TestA::Test_a 命令行运行参数--help:查看帮助 -x:运行中遇到失败(fail/error)用例停止运行 --maxfail=num:失败num个用例时停止运行 -m:运行指定的标记用例。 可使用not等逻辑运算符匹配,是完全匹配,输入的标签名要和被测标签名完全一致。 pytest test_a.py -m 标签名 pytest test_a.py -m=标签名 pytest test_a.py -m "not 标签名"-k:运行包含某个关键字的用例。 可使用not等逻辑运算符匹配,是部分匹配,输入的字符包含在被测用例名中即可。 pytest test_a.py -k 用例名 pytest test_a.py -k=用例名 pytest test_a.py -k "not 用例名"-v:打印详细日志 -s:打印输出日志(通常-vs一起使用) --collect-only:收集测试用例但不运行 --lf:只运行上次失败的用例 --lf:先运行上次失败的用例,再运行其他用例 python解释器命令行运行python -m pytest 文件名.py::类名/函数名::方法名 python -m pytest test_a.py::TestA::Test_a测试代码中添加main函数,python 文件名.py。 python test_a.py if __name__ == '__main__': # 运行当前目录下所有用例 pytest.main() # 运行test_a.py下的TestA pytest.main(['test_a.py::TestA', '-vs']) # 运行test_a.py下标签为a的测试用例 pytest.main(['test_a.py', '-vs', '-m', 'a']) setup和teardown用法setup:测试前用来初始化,teardown:测试后还原测试环境。 setup、teardown 方法级 setup_method、teardown_methond 方法级 setup_class、teardown_class 类级 setup_function、teardown_function 函数级 setup_module、teardown_module 模块级 setup和teardown可以单独使用,不一定需要成对使用。 def setup_function(): print("开始测试") class TestA: def teardown(self): print("结束测试") pytest的配置文件pytest的相关配置可以使用pytest.ini文件。在测试目录下创建pytest.ini文件。 windows系统,pytest.ini文件中不可以添加任何中文及中文符号,包括注释。 1.修改用例命名规则 需要把默认的test命名规则也添加上,否则test相关的命名无法识别。 [pytest] python_files = check_* test_* python_classes = Check* Test* python_functions = check_* test_*2.添加默认参数 可以把常用的命令直接添加到pytest.ini文件中,直接运行 [pytest] addopts = -vs3.添加自定义标签,可以防止warning错误 [pytest] markers = str int float4.指定/忽略执行目录 测试项目较大文件较多时,可以指定部分用例执行或者忽略部分用例不执行 [pytest] testpaths = test_a norecursedirs = test_b3.配置日志格式 windows系统不可以加注释。 [pytest] ;日志开关 true false log_cli = true ;日志级别 log_cli_level = info ;打印详细日志,相当于命令行加 -vs addopts = --capture=no ;日志格式 log_cli_format = %(asctime)s [%(levelname)s] %(message)s (%(filename)s:%(lineno)s) ;日志时间格式 log_cli_date_format = %Y-%m-%d %H:%M:%S ;日志文件位置 log_file = ./log/test.log ;日志文件等级 log_file_level = info ;日志文件格式 log_file_format = %(asctime)s [%(levelname)s] %(message)s (%(filename)s:%(lineno)s) ;日志文件日期格式 log_file_date_format = %Y-%m-%d %H:%M:%S根据配置的日志级别,可以在代码中添加logging.info(),生成测试日志记录。 def test_a(): logging.info("这是测试用例test_a") assert True def test_b(): logging.info("这是测试用例test_b") assert True 2023-03-08 23:03:50 [INFO] 这是测试用例test_a (test_1.py:43) 2023-03-08 23:03:50 [INFO] 这是测试用例test_b (test_1.py:46) |
CopyRight 2018-2019 实验室设备网 版权所有 |