• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

自动化测试——Pytest让Python单元测试变得更高效

武飞扬头像
自由家
帮助1

自动化测试是一种自动执行测试用例的过程,常常被应用于软件开发中。其中,单元测试是一种独立测试,用来确认代码单元的行为是否符合预期。Pytest是Python语言中流行的一个单元测试框架。

本文将详细介绍如何使用Pytest进行单元测试。

  1. 安装pytest

在使用Pytest之前,需要先安装它。可以通过pip命令安装:

pip install pytest
  1. 创建测试文件

创建一个名为test_XXX.py的Python文件(其中XXX为任意名称),并编写测试用例。例如,我们创建一个名为test_calculator.py的文件,并编写如下代码:

  1.  
    def test_addition():
  2.  
    assert 2 2 == 4
  3.  
     
  4.  
    def test_subtraction():
  5.  
    assert 4 - 2 == 2
  6.  
     
  7.  
    def test_multiplication():
  8.  
    assert 3 * 3 == 9
  9.  
     
  10.  
    def test_division():
  11.  
    assert 6 / 3 == 2

以上测试用例包括四个简单的加减乘除测试,每个测试用例都包含一个断言,如果断言成功,则测试通过。

  1. 运行测试

打开命令行工具,进入测试文件所在的目录,并运行以下命令:

pytest

这会自动查找该目录下所有以test_开头的Python文件,并执行其中的函数作为测试用例。此时,我们可以看到输出结果如下:

  1.  
    ============================= test session starts =============================
  2.  
    platform win32 -- Python 3.7.4, pytest-6.2.1, py-1.10.0, pluggy-0.13.1
  3.  
    rootdir: D:\pytest_demo
  4.  
    collected 4 items
  5.  
     
  6.  
    test_calculator.py .... [100%]
  7.  
     
  8.  
    ============================== 4 passed in 0.05s ==============================

以上输出结果表示,Pytest成功找测试文件,并执行了其中的四个测试用例,所有测试都通过。

  1. 常用断言

在编写单元测试时,需要使用断言(assert)来确认预期结果是否正确。以下是常见的几种断言方法:

  • assertEqual(a, b) : 确认a和b相等
  • assertNotEqual(a, b) : 确认a和b不相等
  • assertTrue(x) : 确认x为True
  • assertFalse(x) : 确认x为False
  • assertIs(a, b) : 确认a和b是同一个对象
  • assertIsNot(a, b) : 确认a和b不是同一个对象
  • assertIn(a, b) : 确认a在b中
  • assertNotIn(a, b) : 确认a不在b中
  1. 参数化测试

有些情况下,我们需要对同一个功能进行多组输入输出的测试,此时可以使用参数化测试。例如,我们需要测试一个加法函数add(a,b),接收两个数作为参数并返回它们之和。可以使用@pytest.mark.parametrize装饰器来实现:

  1.  
    import pytest
  2.  
     
  3.  
    def add(a,b):
  4.  
    return a b
  5.  
     
  6.  
    @pytest.mark.parametrize("a, b, expected",[(2, 3, 5), (0, 0, 0), (-1, 1, 0)])
  7.  
    def test_add(a, b, expected):
  8.  
    assert add(a,b) == expected

以上代码中,@pytest.mark.parametrize装饰器将三个参数分别传递给test_add函数,使得该函数被执行三次,分别传入(2, 3, 5)、(0, 0, 0)和(-1, 1, 0)作为参数。

  1. 跳过测试

在某些情况下,我们需要跳过某个测试用例。可以使用@pytest.mark.skip装饰器来实现:

  1.  
    import pytest
  2.  
     
  3.  
    @pytest.mark.skip(reason="testing skip")
  4.  
    def test_skip():
  5.  
    assert False
  6.  
     
  7.  
    def test_normal():
  8.  
    assert True

以上代码中,@pytest.mark.skip装饰器将test_skip函数标记为“跳过”状态。当运行pytest时,该测试用例会被跳过。

  1. 总结

Pytest是一个灵活、易于使用的单元测试框架,适合于Python语言中各种规模的项目。除了本文介绍的功能外,Pytest还有更多高级的使用方法,例如并发测试、覆盖率测试等。希望本文能够帮助读者快速上手Pytest,并提高自己的自动化测试技能。

自动化测试步骤结构框架:

学新通

小编还准备了一些小福利,需要的招呼我一声:

 学新通

【自动化测试交流】:自动化测试交流学新通https://jq.qq.com/?_wv=1027&k=gaZEcqEl

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggaibc
系列文章
更多 icon
同类精品
更多 icon
继续加载