【Pytest】框架基础

Pytest是一个流行的Python测试框架,文章详细介绍了如何安装pytest,包括测试文件的命名规则、命令行运行测试用例的方式以及各种参数选项,如-x、--maxfail、-m、-k等。此外,还提到了setup和teardown的使用,以及如何通过pytest.ini配置文件定制测试行为,如修改命名规则、添加默认参数、定义自定义标签和控制日志输出。
摘要由CSDN通过智能技术生成

安装

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值