<p>我认为你不想隐藏所有的警告,只想隐藏那些不相关的警告。在本例中,来自导入的python模块的deprectation警告。</p>
<p>阅读关于<a href="https://docs.pytest.org/en/latest/warnings.html" rel="noreferrer">Warnings Capture</a>的pytest文档:</p>
<blockquote>
<p>Both -W command-line option and filterwarnings ini option are based on Python’s own <a href="https://docs.python.org/3/using/cmdline.html?highlight=#cmdoption-W" rel="noreferrer">-W option</a> and <a href="https://docs.python.org/3/library/warnings.html#warnings.simplefilter" rel="noreferrer">warnings.simplefilter</a>, so please refer to those sections in the Python documentation for other examples and advanced usage.</p>
</blockquote>
<p>所以你可以用python的<code>-W</code>选项过滤警告!</p>
<p>似乎<code>pytest</code>完全删除了过滤器,因为它在运行时显示了所有那些<code>DeprecationWarning</code>,而Python关于<a href="https://docs.python.org/3/library/warnings.html#default-warning-filter" rel="noreferrer">Default Warning Filters</a>的文档清楚地表明:</p>
<blockquote>
<p>In regular release builds, the default warning filter has the
following entries (in order of precedence):</p>
<pre><code>default::DeprecationWarning:__main__
ignore::DeprecationWarning
ignore::PendingDeprecationWarning
ignore::ImportWarning
ignore::ResourceWarning
</code></pre>
</blockquote>
<p>因此,在您的例子中,如果您想要过滤您想要忽略的警告类型,比如那些<code>DeprecationWarning</code>,只需使用<code>-W</code>选项运行pytest命令:</p>
<pre><code>$ pytest path-to-test-folder -W ignore::DeprecationWarning
</code></pre>
<p><strong>编辑</strong>:根据<a href="https://stackoverflow.com/users/825105/colini">colini</a>的注释,可以按模块筛选。忽略来自所有sqlalchemy的不推荐警告的示例:</p>
<pre><code>ignore::DeprecationWarning:sqlalchemy.*:
</code></pre>
<p>然后,您可以列出已安装的模块,这些模块会在<code>pytest</code>的输出中产生过多的噪声</p>
<p><strong>与文件一起使用,而不是在命令行中使用:</strong></p>
<p>您可能希望在pytest.ini文件中列出这些筛选器:</p>
<pre><code>[pytest]
filterwarnings =
ignore::DeprecationWarning
</code></pre>