擅长:python、mysql、java
<p>创建一个参数化的测试夹具,而不是设置函数:</p>
<pre><code>ts = range(2000, 20001, 1000) # This creates a list of numbers from 2000 to 20000 in increments of 1000.
@pytest.fixture(params=ts)
def plasma(request):
return plasma.LTEPlasma.from_abundance(request.param, {'Si':1.0}, 1e-13, atom_data, 10*86400)
</code></pre>
<p>“参数化测试设备”是这样一种:当您在测试用例中使用它时,pytest将为每个参数创建一个新的测试用例,并分别运行每个测试用例。</p>
<p>通过将名为“plasma”的函数参数添加到每个需要它的测试函数中,可以使用测试设备:</p>
<pre><code>class TestNormalLTEPlasma:
def test_beta_rad(self, plasma):
assert plasma.beta_rad == 1 / (10000 * constants.k_B.cgs.value)
def test_t_electron(self, plasma):
assert plasma.t_electron == 0.9 * plasma.t_rad
def test_saha_calculation_method(self, plasma):
assert plasma.calculate_saha == plasma.calculate_saha_lte
</code></pre>
<p>pytest负责收集fixture,收集测试函数,找出哪些测试函数需要哪些fixture,并将fixture值传递给测试函数以供执行。</p>
<p>查看文档了解更多详细信息:<a href="http://pytest.org/latest/fixture.html#fixture-parametrize">http://pytest.org/latest/fixture.html#fixture-parametrize</a></p>