我目前正在尝试在以下上下文中使用 pytest 的参数化功能:
我有多个功能,应该使用一组通用的测试用例进行测试。根据测试的功能,相同的测试用例应该通过或失败。我想出了一个愚蠢的例子来说明这一点:
import pytest
# Functions to test
def sum_int(a, b):
assert isinstance(a, int)
assert isinstance(b, int)
return a + b
def sum_any(a, b):
return a + b
# Universal test cases
TESTCASES = [
"a,b,result", [
(1, 1, 2),
("a", "a", "aa")
]
]
class Tests:
@pytest.mark.parametrize(*TESTCASES, ids=["int_pass", "str_fail"])
def test_sum_int(self, a, b, result):
assert sum_int(a, b) == result
@pytest.mark.parametrize(*TESTCASES, ids=["int_pass", "str_pass"])
def test_sum_any(self, a, b, result):
assert sum_any(a, b) == result
不幸的是,似乎不可能只通过额外的分数(就像pytest.mark.xfail(reason=AssertionError)可以parametrize()用 ID 来完成一样。
# Does not work
@pytest.mark.parametrize(*TESTCASES,
ids=["int_pass", "str_fail"],
marks=[None, pytest.mark.xfail(reason=AssertionError)])
def test_sum_int(self, a, b, result):
assert sum_int(a, b) == result
实现这一目标的好方法是什么?
阿波罗的战车
海绵宝宝撒
相关分类