我尝试学习如何在我的测试中使用pytest.mark.parametrize,并找到一个例子如下。
import pytest
@pytest.mark.parametrize("test_input,expected", [ ("3+5",8), ("2+4",6), ("6*9",42), return_param])
def test_eval(test_input, expected):
assert eval(test_input) == expected
但是,如何用一些函数返回值替换 3 + 5 , 2 + 4 , 6 * 9 ?喜欢 return_param
import pytest
@pytest.mark.parametrize("test_input,expected", [ ("3+5",8), ("2+4",6), ("6*9",42), return_param])
def test_eval(test_input, expected):
assert eval(test_input) == expected
def return_param(sef):
return 7*8, 56
答案 0 :(得分:0)
看起来很简单:
import pytest
def return_param():
return "7*8", 56
@pytest.mark.parametrize("test_input,expected", [
("3+5", 8),
("2+4",6),
("6*9",42),
return_param(),
])
def test_eval(test_input, expected):
assert eval(test_input) == expected
答案 1 :(得分:0)
根据函数返回值的关注,可以使用返回值。 但正如你所说,返回方法将在setup类中,而不是添加额外的return_param(),在setup类本身中添加你的返回逻辑。
注意: - setup_class的返回值将是生成器/实例类型。