自动化测试——Pytest让Python单元测试变得更高效
自动化测试是一种自动执行测试用例的过程,常常被应用于软件开发中。其中,单元测试是一种独立测试,用来确认代码单元的行为是否符合预期。Pytest是Python语言中流行的一个单元测试框架。
本文将详细介绍如何使用Pytest进行单元测试。
在使用Pytest之前,需要先安装它。可以通过pip命令安装:
pip install pytest
创建一个名为test_XXX.py的Python文件(其中XXX为任意名称),并编写测试用例。例如,我们创建一个名为test_calculator.py的文件,并编写如下代码:
-
def test_addition():
-
assert 2 2 == 4
-
-
def test_subtraction():
-
assert 4 - 2 == 2
-
-
def test_multiplication():
-
assert 3 * 3 == 9
-
-
def test_division():
-
assert 6 / 3 == 2
以上测试用例包括四个简单的加减乘除测试,每个测试用例都包含一个断言,如果断言成功,则测试通过。
打开命令行工具,进入测试文件所在的目录,并运行以下命令:
pytest
这会自动查找该目录下所有以test_开头的Python文件,并执行其中的函数作为测试用例。此时,我们可以看到输出结果如下:
-
============================= test session starts =============================
-
platform win32 -- Python 3.7.4, pytest-6.2.1, py-1.10.0, pluggy-0.13.1
-
rootdir: D:\pytest_demo
-
collected 4 items
-
-
test_calculator.py .... [100%]
-
-
============================== 4 passed in 0.05s ==============================
以上输出结果表示,Pytest成功找测试文件,并执行了其中的四个测试用例,所有测试都通过。
在编写单元测试时,需要使用断言(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中
有些情况下,我们需要对同一个功能进行多组输入输出的测试,此时可以使用参数化测试。例如,我们需要测试一个加法函数add(a,b),接收两个数作为参数并返回它们之和。可以使用@pytest.mark.parametrize装饰器来实现:
-
import pytest
-
-
def add(a,b):
-
return a b
-
-
-
def test_add(a, b, expected):
-
assert add(a,b) == expected
以上代码中,@pytest.mark.parametrize装饰器将三个参数分别传递给test_add函数,使得该函数被执行三次,分别传入(2, 3, 5)、(0, 0, 0)和(-1, 1, 0)作为参数。
在某些情况下,我们需要跳过某个测试用例。可以使用@pytest.mark.skip装饰器来实现:
-
import pytest
-
-
-
def test_skip():
-
assert False
-
-
def test_normal():
-
assert True
以上代码中,@pytest.mark.skip装饰器将test_skip函数标记为“跳过”状态。当运行pytest时,该测试用例会被跳过。
Pytest是一个灵活、易于使用的单元测试框架,适合于Python语言中各种规模的项目。除了本文介绍的功能外,Pytest还有更多高级的使用方法,例如并发测试、覆盖率测试等。希望本文能够帮助读者快速上手Pytest,并提高自己的自动化测试技能。
自动化测试步骤结构框架:
小编还准备了一些小福利,需要的招呼我一声:
【自动化测试交流】:自动化测试交流https://jq.qq.com/?_wv=1027&k=gaZEcqEl
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhggaibc
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01