Python自动化测试框架pytest的详解安装与运行
简介
Python自动化测试框架pytest是基于 Python编程语言的一种自动化测试框架。它支持参数化测试、fixture、模块和测试运行的控制等功能。
安装pytest
在终端运行以下命令安装pytest
pip install pytest
编写pytest测试用例
pytest使用assert断言来判断测试结果是否正确,例如:
def test_addition():
assert 1 + 1 == 2
上述代码定义了一个测试函数test_addition,它使用断言assert来判断1+1的结果是否等于2。 当pytest执行这个测试函数时,它将检查assertion是否为真。如果值为假,pytest会抛出AssertionError。
参数化测试
pytest允许使用@pytest.mark.parametrize运行多个测试用例。这很方便,因为您可以一次测试多个输入和输出,而不需要编写大量的测试用例。
例如:
import pytest
@pytest.mark.parametrize("test_input,expected_output", [("3+5", 8),("2+4", 6), ("6*9", 42)])
def test_eval(test_input, expected_output):
assert eval(test_input) == expected_output
Fixture
pytest中的fixture用于将测试数据注入到测试用例中。 使用fixture能够在多个测试用例中复用相同的对象或数据。
例如:
import pytest
@pytest.fixture()
def test_data():
return {"username": "admin", "password": "admin_pass"}
def test_login(test_data):
assert test_data["username"] == "admin"
assert test_data["password"] == "admin_pass"
上述代码中,test_data fixture返回一个字典,该字典包含用户名和密码。test_login用于验证字典中的用户名和密码是否正确。
运行pytest测试
要运行pytest测试,您可以在终端中运行以下命令:
pytest
此命令将在目录中查找并运行所有以“test_”开头的测试用例。
您还可以指定要运行的目录或测试文件。例如,以下命令运行所有测试用例:
pytest tests/
以下命令将运行名为test_cases.py文件中的所有测试用例:
pytest test_cases.py
示例说明:
假设您的项目有一个名为“calc”的计算器模块,您可以编写以下测试用例以测试该模块的正确性:
import calc
def test_addition():
assert calc.add(2, 3) == 5
def test_subtraction():
assert calc.subtract(5, 3) == 2
运行pytest测试:
pytest
输出:
collected 2 items
test_calc.py .. [100%]
==================================== 2 passed in 0.01s ====================================
所有的测试用例都通过了。
另一个例子是参数化测试,我们用以下代码测试一个数字的阶乘是否正确:
import factorial
import pytest
@pytest.mark.parametrize("test_input, expected_output", [(0, 1), (1, 1), (2, 2), (3, 6), (10, 3628800)])
def test_factorial(test_input, expected_output):
assert factorial.factorial(test_input) == expected_output
运行pytest测试:
pytest
输出:
collected 5 items
test_factorial.py ..... [100%]
==================================== 5 passed in 0.01s ====================================
所有的参数化测试用例都通过了,测试已完成。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python自动化测试框架pytest的详解安装与运行 - Python技术站