擅长:python、mysql、java
<p><strong>注意:</strong>如果您的设备依赖于另一个带有参数的设备,则此解决方案不起作用</p>
<p>不知道pytest包中是否有默认的解决方案,但您可以定制一个:</p>
<pre><code>import pytest
from _pytest.mark import MarkInfo
def pytest_generate_tests(metafunc):
test_func = metafunc.function
if 'use_multifixture' in [name for name, ob in vars(test_func).items() if isinstance(ob, MarkInfo)]:
result, func = test_func.use_multifixture.args
params_names = result.split(',')
params_values = list(func())
metafunc.parametrize(params_names, [params_values])
def foobar():
return "blah", "whatever"
@pytest.mark.use_multifixture("foo,bar", foobar)
def test_stuff(foo, bar):
assert foo == "blah" and bar == "whatever"
def test_stuff2():
assert 'blah' == "blah"
</code></pre>
<p>所以我们定义了pytest_generate_tests元函数。这个函数</p>
<ol>
<li>检查测试中是否有<em>多像素</em>标记</li>
<li><p>如果标记为on-它将采用变量名<em>“foo,bar”</em>和function<em>foobar</em>,这些变量将在生成时执行</p>
<p>在@pytest.mark.multifixture(“foo,bar”,foobar)</p></li>
</ol>