gpt4 book ai didi

python - 具有多个断言的 pytest 参数化装置

转载 作者:行者123 更新时间:2023-11-28 20:53:27 27 4
gpt4 key购买 nike

我有一个示例代码,其中我有一个带有两个断言的参数化测试函数:

@pytest.mark.parametrize("test_input,expected", [
("3", 8),
("2", 6),
])
def test_eval(test_input, expected):
assert test_input == expected # first assert
assert test_input + 2 ==expected # second assert

所以我想要的输出是(伪代码):

assertion error 3==8
assertion error 5==8
assertion error 2==6
assertion error 4==6

在对所有组合执行测试时,有没有办法到达第二个断言,即使第一个断言失败?

作为替代方案,我想知道是否有一种方法可以将其放入类中,例如类似于此的内容:

@pytest.mark.parametrize("test_input,expected", [
("3", 8),
("2", 6),
])
class TestFunc(object):
def test_f1(test_input, expected):
assert test_input==expected
def test_f2(test_input, expected):
assert test_input+2==expected

我想得到与前一个案例相同的输出:

assertion error 3==8
assertion error 5==8
assertion error 2==6
assertion error 4==6

最佳答案

pytest-expect做那种事的插件。

您在类里面使用 @pytest.mark.parametrize 概述的方式开箱即用,您只是忘记了 self

另一种可能性是简单地编写两个测试并共享参数化:

eval_parametrize = pytest.mark.parametrize("test_input, expected", [
("3", 8),
("2", 6),
])

@eval_parametrize
def test_f1(test_input, expected):
assert test_input == expected

@eval_parametrize
def test_f2(test_input, expected):
assert test_input + 2 == expected

关于python - 具有多个断言的 pytest 参数化装置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35742064/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com