gpt4 book ai didi

python - 将测试标记为从 pytest_collection_modifyitems 跳过

转载 作者:行者123 更新时间:2023-11-28 20:23:14 28 4
gpt4 key购买 nike

如何在 pytest 收集过程中将测试标记为已跳过?

我想做的是让 pytest 收集所有测试,然后使用 pytest_collection_modifyitems Hook 根据我从数据库中获得的条件将某个测试标记为已跳过。

我找到了一个我不喜欢的解决方案,我想知道是否有更好的方法。

def pytest_collection_modifyitems(items, config):
... # get skip condition from database
for item in items:
if skip_condition == True:
item._request.applymarker(pytest.mark.skipif(True, reason='Put any reason here'))

此解决方案的问题是我正在访问该类的 protected 成员 (_request)..

最佳答案

你快到了。你只需要 item.add_marker

def pytest_collection_modifyitems(config, items):
skip = pytest.mark.skip(reason="Skipping this because ...")
for item in items:
if skip_condition: # NB You don't need the == True
item.add_marker(skip)

请注意,item 有一个可迭代的属性 keywords,其中包含它的标记。所以你也可以使用它。

参见 pytest documentation关于这个话题。

关于python - 将测试标记为从 pytest_collection_modifyitems 跳过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32247736/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com