pytest快速入门

Python有自带的单元测试框架unittest,那为什么还要学习pytest呢?先了解下pytest 相较于 unittest 有哪些优点:

  1. 语法简洁:pytest 使用基于assert的简洁语法,而 unittest 使用较为传统的断言方法,如 assertEqual 等。
  2. 易于上手:pytest 的简洁性使得它更易于上手和学习,测试用例编写更加直观。
  3. 参数化测试:pytest 支持使用装饰器来实现参数化测试,可以根据不同的参数运行同一个测试用例多次,而 unittest 实现类似功能相对复杂。
  4. 插件系统:pytest 拥有丰富的插件生态系统,可以通过插件来扩展和定制测试过程,而 unittest 的插件较少。
  5. 兼容性:pytest 可以运行 unittest 和 nose 编写的测试用例,具有很好的兼容性。
  6. 测试报告:pytest 支持生成详细的测试报告,并且有多种格式可选,如 HTML、JUnit XML 等。
  7. fixtures:pytest 提供了强大的 fixtures 机制,可以方便地为测试提供初始化和清理资源。
  8. 灵活性:pytest 支持多种运行方式,包括命令行模式和模块级导入等,提供了更多的灵活性。
  9. 集成:pytest 可以很好地与持续集成系统(如 Jenkins)集成,支持多种集成方式。
  10. 测试用例的 skip 和 xfail 处理:pytest 允许你跳过某些测试用例或标记预期失败的测试用例。

安装

要安装pytest,可以使用Python的包管理工具pip。以下是安装pytest的步骤:

  1. 安装pytest:使用pip工具来安装pytest。在命令行中运行以下命令来安装pytest:

    pip install -U pytest
    
  2. 验证安装:安装完成后,可以运行以下命令来验证pytest是否成功安装:

    pytest --version
    

如果安装成功,该命令将打印pytest的版本信息。

简单示例

以下是一个简单的pytest示例,假设我们有一个简单的函数add,用于将两个数字相加:

# my_module.py
def add(a, b):
    return a + b

现在我们来编写一个对这个函数进行测试的pytest测试用例:

# test_my_module.py
from my_module import add

def test_add():
    assert add(2, 3) == 5
    assert add(1, 9) == 10

在这个示例中,我们定义了一个名为test_add的测试函数,其中包含了两个断言来测试add函数的功能。要运行这个测试用例,只需在命令行中使用pytest命令即可:

pytest test_my_module.py

运行后,pytest将执行测试用例并输出结果。在这个简单示例中,如果一切正常,将看到测试通过的消息。

$ pytest test_my_module.py
===================================== test session starts ======================================
platform win32 -- Python 3.11.9, pytest-8.2.1, pluggy-1.5.0
rootdir: C:\Users\bill\PycharmProjects\test
plugins: anyio-4.3.0, Faker-25.0.1, xdist-3.6.1
collected 1 item                                                                                                                                    

test_my_module.py .                                                                     [100%]

======================================= 1 passed in 0.18s =======================================

在pytest中,也可以将多个测试用例组织到一个类中。这样做有助于更好地组织和管理测试用例,下面是一个示例:

class TestMathFunctions:
    def test_addition(self):
        assert 1 + 2 == 3

    def test_subtraction(self):
        assert 4 - 2 == 2

自动发现规则

默认的测试发现规则包括以下几点:

  1. 文件和文件夹命名规则: pytest会自动发现以test_开头或者以_test结尾的文件或者文件夹,并将其作为测试文件。

    # 例如:
  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值