gpt4 book ai didi

pytest - 标记 Pytest 固定装置而不是使用固定装置的所有测试

转载 作者:行者123 更新时间:2023-12-04 04:23:33 29 4
gpt4 key购买 nike

有没有办法在 PyTest fixture 中定义标记?
当我指定 -m "not slow" 时,我试图禁用慢速测试在 pytest 中。
我已经能够禁用单个测试,但不能禁用用于多个测试的 fixture 。
我的 fixture 代码如下所示:

@pytest.fixture()
@pytest.mark.slow
def postgres():
# get a postgres connection (or something else that uses a slow resource)
yield conn
并且一些测试具有这种一般形式:
def test_run_my_query(postgres):
# Use my postgres connection to insert test data, then run a test
assert ...
我在 https://docs.pytest.org/en/latest/mark.html 中发现了以下评论( updated link ):
“标记只能用于测试,对 fixture 没有影响。”这个评论的原因是fixtures本质上是函数调用并且标记只能在编译时指定吗?
有没有办法指定所有使用特定装置(在本例中为 postgres)的测试都可以标记为慢而不指定 @pytest.mark.slow每次考试?

最佳答案

您似乎已经在文档中找到了答案。订阅 https://github.com/pytest-dev/pytest/issues/1368为了观看这个功能,它可能会被添加到以后的 pytest 版本中。

现在,你可以做一个 hack 来解决方法:

# in conftest.py

def pytest_collection_modifyitems(items):
for item in items:
if 'postgres' in getattr(item, 'fixturenames', ()):
item.add_marker("slow")

关于pytest - 标记 Pytest 固定装置而不是使用固定装置的所有测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58492764/

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