为什么我只能通过在测试脚本中使用固定装置(来自 pytest)来获得作为 return 值的函数?

Why do I only get a function as a return value by using a fixture (from pytest) in a test script?

我想为我的代码编写测试函数并决定使用 pytest。我查看了本教程:https://semaphoreci.com/community/tutorials/testing-python-applications-with-pytest

我的真实代码涉及另一个脚本,是我写的,所以我做了一个例子,它也产生了同样的问题,但不依赖我的其他代码。

@pytest.fixture()
def example():
    value = 10
    return value

def test_value(example):
    print(example)
    assert(example == 10)

test_value(example)

当我 运行 我的脚本使用这个玩具示例时,打印 returns 函数:

<0x0391E540 处的函数示例>

断言失败。

如果我尝试用括号调用 example(),我会得到:

失败:直接调用夹具“example_chunks”。 Fixtures 不应该被直接调用, 但是当测试函数请求它们作为参数时会自动创建。 有关灯具的更多信息,请参阅 https://docs.pytest.org/en/stable/fixture.html,以及 https://docs.pytest.org/en/stable/deprecations.html#calling-fixtures-directly关于如何更新您的代码。

我确定,我在这里遗漏了一些重要的东西,但是搜索 google 没有帮助我,这就是为什么我希望这里有人可以提供一些帮助。

  1. 从您的脚本中删除这一行
test_value(example)
  1. 运行 你的脚本文件 pytest file.py

fixtures 将由 pytest 自动解析

在您的示例中,您 运行 直接编码,fixtures 只是简单的函数