gpt4 book ai didi

python - 为什么 pytest 装置不能按预期工作?

转载 作者:太空宇宙 更新时间:2023-11-03 13:43:14 24 4
gpt4 key购买 nike

我正在尝试使用 PyTest,但我无法获得如何设置固定装置。我尝试了以下代码:

import pytest
import random

@pytest.fixture()
def setup():
a = random.randint(0, 10)

def test(setup):
assert 3 > a
if __name__ == '__main__':
pytest.main()

我收到了 “NameError: name 'a' is not defined”.

此外,官方文档中的示例也不起作用。怎么了?我需要类似于 setUp/tearDown 的功能。但我不想使用 unittest。有人能给我提供一个工作装置的例子吗(setUp 类型和 tearDown 类型)?

我想将一些测试编写为函数,将一些测试编写为类中的方法。因此,我的第二个问题是关于将 fixture 与类/方法一起使用的工作示例。我只需要查看 Python 中固定装置的工作示例。

是否有不同的 Python 3 单元测试框架,其断言与 PyTest 一样简单?

最佳答案

固定装置不是这样工作的。他们无法神奇地将名称 a 从一个函数的 (setup) 局部作用域转移到另一个函数的 (test)。相反,您的 setup 函数必须显式返回将作为 setup 参数传递给您的 test 函数的对象。例如:

import pytest
import random

class TestSetup:
def __init__(self):
self.a = random.randint(0, 10)

@pytest.fixture()
def setup():
return TestSetup()

def test(setup):
assert 0 <= setup.a <= 10

if __name__ == '__main__':
pytest.main()

关于python - 为什么 pytest 装置不能按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25822630/

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