首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pytest fixture --获取值并避免出现错误"Fixture 'X‘directly“

pytest fixture --获取值并避免出现错误"Fixture 'X‘directly“
EN

Stack Overflow用户
提问于 2019-02-26 21:33:02
回答 2查看 7.6K关注 0票数 6

我已经将pytest更新到了4.3.0,现在我需要重新编写测试代码,因为直接调用fixture已被弃用。

我有一个在unittest.TestCase中使用的fixture的问题,我如何获得从fixture返回的值,而不是对函数本身的引用?

示例:

代码语言:javascript
复制
@pytest.fixture
def test_value():
    return 1

@pytest.mark.usefixtures("test_value")
class test_class(unittest.TestCase):
    def test_simple_in_class(self):
        print(test_value)    # prints the function reference and not the value
        print(test_value())  # fails with Fixtures are not meant to be called directly

def test_simple(test_value):
    print(test_value)  # prints 1

如何在test_simple_in_class()方法中获取test_value?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-26 21:47:59

已经有一个big discussion on this了。你可以通读一下或者参考deprecation documentation

在你设计的例子中,似乎这就是答案:

代码语言:javascript
复制
@pytest.fixture(name="test_value")
def test_simple_in_class(self):
    print(test_value())

但是,我建议您查看文档。另一个示例可能就是您想要的。你可以阅读我链接到的讨论,以了解其中的一些原因。不过,这场辩论变得有点激烈。

票数 6
EN

Stack Overflow用户

发布于 2019-02-26 22:34:23

如果有人感兴趣的话,这是我的简单示例的解决方案。

代码语言:javascript
复制
def my_original_fixture():
    return 1

@pytest.fixture(name="my_original_fixture")
def my_original_fixture_indirect():
    return my_original_fixture()

@pytest.mark.usefixtures("my_original_fixture")
class test_class(unittest.TestCase):
    def test_simple_in_class(self):
        print(my_original_fixture())

def test_simple(my_original_fixture):
    print(my_original_fixture)
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54886692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档