学习笔记之pytest单元测试框架

本文介绍了pytest单元测试框架,包括其主要功能、默认规则和测试用例的运行方式。详细阐述了pytest.main()的命令行参数,assert断言的使用,以及数据驱动测试@ pytest.mark.parametrize()的方法。pytest在生成测试报告、持续集成和插件扩展等方面有广泛应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、介绍

1. pytest单元测试框架主要做什么?

  1. 测试发现:从多个文件里找到测试用例
  2. 测试执行:按照一定顺序和规则执行,并生成结果
  3. 测试判断:通过断言判断预期结果和实际结果的差异
  4. 测试报告:统计测试进度,耗时,通过率,生成测试报告
  5. 作用:
    pytest结合allure生成测试报告;
    pytest结合Jenkins实现持续集成;
  6. pytest插件:
    pytest-html生成html格式自动化测试报告;
    pytest-xdist测试用例分布式执行、多cpu分发;
    pytest-ordering改变测试用例执行顺序;
    pytest-rerunfailures用例失败后重跑

2. 默认规则

  • 模块名必须以test_开头或_test结尾
    test_login.py

  • 测试类必须以test开头,并且不能有init方法
    class TestLogin:

  • 测试函数必须以test开头
    def test_login(self):

3. pytest测试用例的运行方式

  • 主函数运行
    运行主函数,主函数含 pytest.main()
  • 命令行方式运行
    在终端中直接执行: pytest

二、用法

1. pytest.main()

参考:pytest之main函数的用法

1.1 命令行参数详情

-s: 显示程序中的print/logging输出,不输出环境信息
-v: 丰富信息模式, 输出更详细的用例执行信息
-q: 安静模式, 不输出环境信息
-x: 出现一条测试用例失败就退出测试。利于调试
-k:可以使用and、not、or等逻辑运算符,区分:匹配范围(文件名、类名、函数名)

  • 运行目录及子目录下所有用例

     pytest.main()
    
  • 运行指定模块所有用例

    pytest.main(['test_login.py'])
    
  • 运行指定模块指定类指定用例,"::"冒号分隔开

    pytest.main(['test_login.py::class TestLogin::def test_login(self)'])
    

2. assert 断言

assert后的表达式为真,即为断言通过,用例执行通过。

assert xx 判断xx为真
assert not xx 判断xx不为真
assert a in b 判断b包含a
assert a == b 判断a等于b
assert a != b 判断a不等于b

3. 数据驱动

3.1 @pytest.mark.parametrize()用法

作用:给测试用例,输入测试数据
第一个参数:参数名,字符串,表示用例函数的参数。多个参数,以逗号分开。
第二个参数:参数值,列表,用于保存测试数据。有多组数据,可嵌套元组。
如:
@pytest.mark.parametrize(‘参数名’,list)
@pytest.mark.parametrize(‘参数名1,参数名2’,[(参数1_data[0], 参数2_data[0]),(参数1_data[1], 参数2_data[1])])

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值