为什么我只能通过在测试脚本中使用固定装置(来自 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 没有帮助我,这就是为什么我希望这里有人可以提供一些帮助。
- 从您的脚本中删除这一行
test_value(example)
- 运行 你的脚本文件
pytest file.py
fixtures 将由 pytest 自动解析
在您的示例中,您 运行 直接编码,fixtures 只是简单的函数
我想为我的代码编写测试函数并决定使用 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 没有帮助我,这就是为什么我希望这里有人可以提供一些帮助。
- 从您的脚本中删除这一行
test_value(example)
- 运行 你的脚本文件
pytest file.py
fixtures 将由 pytest 自动解析
在您的示例中,您 运行 直接编码,fixtures 只是简单的函数