【Pytest】框架基础 您所在的位置:网站首页 pytest运行规则 【Pytest】框架基础

【Pytest】框架基础

2023-03-13 12:27| 来源: 网络整理| 查看: 265

安装

前提:本地已配置完成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 = -vs

3.添加自定义标签,可以防止warning错误

[pytest] markers = str int float

4.指定/忽略执行目录

测试项目较大文件较多时,可以指定部分用例执行或者忽略部分用例不执行

[pytest] testpaths = test_a norecursedirs = test_b

3.配置日志格式

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 实验室设备网 版权所有