擅长:python、mysql、java
<p>如果要防止<code>testAllLevels</code>被收集为测试,则必须创建一个名为<code>pytest.ini</code>的文件,并将其放入<code>main</code>或{<cd4>}文件夹中。在</p>
<p><code>pytest.ini</code>的内容应该如下所示:</p>
<pre><code>[pytest]
python_functions=test_
</code></pre>
<p>注意,这也意味着从现在起,所有的测试函数都必须有一个前缀<code>test_</code>。<code>pytest</code>的默认行为是收集前缀为<code>test</code>(不是<code>test_</code>)的函数。在</p>
<p>要回答关于<code>why functions are run on import?</code>的问题,请尝试以下实验。在<code>test_foo.py</code>中添加一行以获取对<code>test_foo.py</code>模块本身的内部引用。在</p>
^{pr2}$
<p>然后在同一个模块中,创建一个如下所示的测试用例:</p>
<pre><code>def test_01():
print(dir(reference_to_current_module))
reference_to_current_module.testAllLevels()
</code></pre>
<p>在import语句执行之后,<code>dir()</code>的输出将显示<code>testAllLevels</code>已成为属于{<cd11>}的合法函数。这已经通过对<code>test_foo.py</code>的引用调用函数来验证。我认为它被pytest收集是因为它是一个函数“<em>属于</em>”一个测试模块,它的函数名有一个<code>test</code>前缀。在</p>