<p>为此,您可以引入自己的标记。例如:</p>
<h3>测试用例</h3>
<pre><code>import pytest
@pytest.mark.myxfail(envs=["my_env_1", "my_env_18"], reason="Bug/JIRA-TICKET")
def test_eggs():
pass
</code></pre>
<h3>分析<code>myxfail</code>标记</h3>
<p>使用以下内容将文件<code>conftest.py</code>添加到项目/测试根目录中:</p>
<pre><code>import pytest
@pytest.fixture(autouse=True)
def check_myxfail(request):
myxfail = request.node.get_closest_marker("myxfail")
if myxfail is None:
return
envs = myxfail.kwargs.get("envs", [])
if "my_env_1" in envs:
reason = myxfail.kwargs.get("reason", None)
pytest.xfail(reason=reason)
</code></pre>
<h3>寄存器<code>myxfail</code>标记</h3>
<p>在<code>pytest.ini</code>配置中:</p>
<pre><code>[pytest]
markers =
myxfail: xfail the test if env matches.
</code></pre>
<h3>样本执行</h3>
<pre><code>$ pytest -vrx
==================================== test session starts =====================================
...
collected 1 item
test_spam.py::test_eggs XFAIL [100%]
================================== short test summary info ===================================
XFAIL test_spam.py::test_eggs
reason: Bug/JIRA-TICKET
===================================== 1 xfailed in 0.04s =====================================
</code></pre>
<p>当然,您仍然必须自己实现<code>env</code>处理。用您自己的impl替换<code>if "my_env_1" in envs</code>条件(通过fixture/命令行arg等传递<code>env</code>)</p>