- 简述pytest与unittest之间的区别
pytest是一种成熟、全功能的Python测试框架,相较于unittest,pytest提供了更加丰富的功能和更加容易阅读的测试报告输出。与unittest相比,pytest的最大优点是可以自动发现和执行测试用例,可以非常方便地进行参数化,并支持测试用例级别的重试等功能。
- 安装pytest
使用pip安装pytest:
pip install -U pytest
安装完毕后,我们可以使用pytest --version命令来检查pytest是否正确安装。
- 编写测试用例并运行
在Python项目里,所有的测试用例文件都应该放在tests目录下面,pytest会自动发现并执行这些测试用例。编写测试用例时,需要注意用“test_”开头的测试函数命名规范。以下是一个示例:
# tests/test_example.py
def test_addition():
assert 1 + 2 == 3
def test_subtraction():
assert 4 - 2 == 2
在运行测试之前,我们要确保需要测试的函数已经被写好并且运行成功。在命令行中,进入项目根目录,运行以下命令:
pytest
运行后,会自动发现并运行tests目录下的所有测试用例,测试报告也会输出到控制台中。下面是一个简单的示例输出:
======= test session starts ========
platform linux -- Python 3.8.5, pytest-6.2.2, py-1.10.0, pluggy-0.13.1
rootdir: /code
collected 2 items
tests/test_example.py .. [100%]
======= 2 passed in 0.01s ========
- 参数化测试
pytest支持参数化测试,即在同一个测试函数中为不同的输入提供不同的期望输出。我们可以使用pytest.mark.parametrize()装饰器来实现参数化测试的功能。
以下是一个示例:
# tests/test_example.py
import pytest
@pytest.mark.parametrize("a, b, expected", [
(1, 2, 3),
(3, 4, 7),
(-1, -2, -3),
])
def test_addition_with_parameters(a, b, expected):
assert a + b == expected
这里引用了pytest的mark.parametrize装饰器,将三组测试数据(a、b、expected)作为参数传递给测试用例test_addition_with_parameters。最终,pytest会自动运行三次测试用例,并将测试报告统计在一起。
- 断言assert的使用
pytest支持多种断言方式, assert关键字是最常见的一种方式,他检查表达式是否为真,如果表达式为假,则抛出AssertionError异常,并且pytest会将此测试用例标记为失败。以下是一个示例:
# tests/test_example.py
def test_addition_with_assert():
c = 1 + 2
assert c == 4
这个测试用例的期望结果是1 + 2 = 3,但是实际结果却是4。当pytest执行这个测试用例时,会抛出AssertionError异常,并标记此测试用例为失败。
以上就是关于python使用pytest自动化测试的攻略,建议开发者尽早学习和使用pytest, 将会大大提高我们的工作效率,并且避免一系列的人为错误。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python使用pytest接口自动化测试的使用 - Python技术站