假设我有以下装置:
@pytest.fixture(params=['google.com','other-provider.com')
def smtp_server(request):
.... some initialisation ....
return SmtpServer(request.param)
@pytest.fixture(params=['plain_text','html')
def message(request):
.... some initialisation according to email type....
return msg_obj
因此,如果我在一个测试函数中使用它们,我有组合:google + plain,provider + plain,google + html,provider + html。
但是,如果我想重复使用灯具,但仅限于特定组合。例如,我注意到当我向谷歌发送html电子邮件时,它在某些情况下会失败。如何重复使用灯具并测试这种情况,而无需测试发送到other-provider.com,这是毫无意义的?
换句话说 - 如何跳过特定测试功能中的一些灯具组合?
答案 0 :(得分:1)
首先,我想指出这实际上是一个相当奇怪的案例。你真的确定测试对于你想跳过的组合根本没有意义吗?
说过我自己解决这个问题的方法就是简单地使用
if snmtp_server == 'other-provider.com' and message == 'html':
pytest.skip('impossible combination')
测试功能内部。它很简陋,但对于这种不同寻常的罕见案例而言效果还不错。