【发布时间】:2020-04-28 12:49:06
【问题描述】:
我试图避免在我的测试中重复太多样板,并且我想以更有条理的方式重写它们。假设我有两个不同的解析器,它们都可以将文本解析为doc。然后该文档将用于其他测试。最终目标是公开一个可以在其他测试中使用的doc() 夹具,并以这样的方式进行参数化,使其运行给定解析器和文本的所有组合。
@pytest.fixture
def parser_a():
return "parser_a" # actually a parser object
@pytest.fixture
def parser_b():
return "parser_b" # actually a parser object
@pytest.fixture
def short_text():
return "Lorem ipsum"
@pytest.fixture
def long_text():
return "If I only knew how to bake cookies I could make everyone happy."
现在的问题是,如何创建一个看起来像这样的doc() 固定装置:
@pytest.fixture(params=???)
def doc(parser, text):
return parser.parse(text)
其中parser 参数化为parser_a 和parser_b,text 参数化为short_text 和long_text。这意味着doc 总共将测试四种解析器和文本组合。
关于 PyTest 参数化装置的文档非常模糊,我找不到如何解决这个问题的答案。欢迎大家帮忙。
【问题讨论】:
-
答案是不可能ATM,见issue #349。
pytest-lazy-fixture插件声称具有该功能,值得一试。
标签: python pytest fixtures parameterized-unit-test