如何在 Python 中生成动态(参数化)单元测试
简介
测试时复杂的功能,通常需要创建多个输入略有不同的测试用例。手动创建每个测试用例可能会变得乏味且容易出错。这就是参数化测试发挥作用的地方。
参数化
参数化允许您定义单个测试用例并提供参数值列表来为每个测试用例运行测试参数集。这种方法可以自动生成测试用例,并确保测试所有可能的输入。
使用 pytest 的 Parametrizer
pytest 提供了一个方便的装饰器 @pytest.mark.parametrize,用于参数化测试功能。它采用元组或字典列表作为参数,每个代表一组参数值。
import pytest test_data = [ ("foo", "a", "a"), ("bar", "a", "b"), ("lee", "b", "b"), ] @pytest.mark.parametrize("name, a, b", test_data) def test_sequence(name, a, b): assert a == b
此代码将生成三个测试,每个测试对应 test_data 中的每组参数。测试名称将根据参数值自动生成。
使用参数化包
参数化包为参数化提供了更灵活的接口。它允许您定义一个返回一系列测试用例的生成器函数。
from parameterized import parameterized test_data = [ ("foo", "a", "a"), ("bar", "a", "b"), ("lee", "b", "b"), ] @parameterized.expand(test_data) def test_sequence(name, a, b): assert a == b
同样,此代码将生成三个测试,一个用于 test_data 中的每组参数。测试名称将自动生成。
好处
使用参数化测试有几个好处:
以上是如何在Python中高效生成参数化单元测试?的详细内容。更多信息请关注PHP中文网其他相关文章!