如何在辅助功能中使用固定装置?

时间:2019-06-19 00:05:29

标签: python pytest

I asked the same question in GitHub

我在他非常有用的答案中了解了pytest-helpers-namespace from s0undt3ch。但是我发现了一个用例,但似乎找不到明显的解决方法。这是我原始问题在GitHub上的粘贴。


如何在助手功能中使用在竞赛中已经声明的固定装置? 在所有测试中,我都有一个大的,占用大量内存的配置对象(为简单起见,有一个字典),但我不想拆下来并重建该对象,因此范围仅限于会话并可以重用。通常,我想在测试中从配置对象中获取值。

我知道在夹具中重复使用夹具,您必须传递一个引用

# fixtures
@pytest.fixture(scope="session")
def return_dictionary():
    return {
        "test_key": "test_value"
    }

@pytest.fixture(scope="session")
def add_random(return_dictionary):
    _temp = return_dictionary
    _temp["test_key_random"] = "test_random_value"
    return _temp

是因为pytest收集了类似的装饰器,并一起分析了它们吗?我希望有人对此提供意见。谢谢!

以下是我创建的一些文件,以演示我在寻找什么以及看到的错误。

# conftest.py
import pytest
from pprint import pprint
pytest_plugins = ["helpers_namespace"]

# fixtures
@pytest.fixture(scope="session")
def return_dictionary():
    return {
        "test_key": "test_value"
    }

# helpers
@pytest.helpers.register
def super_print(_dict):
    pprint(_dict)

@pytest.helpers.register
def super_print_always(key, _dict=return_dictionary):
    pprint(_dict[key])
# test_check.py
import pytest

def test_option_1(return_dictionary):
    print(return_dictionary)


def test_option_2(return_dictionary):
    return_dictionary["test_key_2"] = "test_value_2"
    pytest.helpers.super_print(return_dictionary)


def test_option_3():
    pytest.helpers.super_print_always('test_key')
key = 'test_key', _dict = <function return_dictionary at 0x039B6C48>

    @pytest.helpers.register
    def super_print_always(key, _dict=return_dictionary):
>       pprint(_dict[key])
E       TypeError: 'function' object is not subscriptable

conftest.py:30: TypeError

0 个答案:

没有答案