Python 3.x 如何在自动使用模式下获取pytest fixture返回值?

Python 3.x 如何在自动使用模式下获取pytest fixture返回值?,python-3.x,pytest,Python 3.x,Pytest,我是学英语的新手。在下面的示例代码中。 当夹具处于autouse模式时,如何在test\u one函数中获取A()对象 导入pytest 导入时间 A类: 定义初始化(自): self.abc=12 @pytest.fixture(autouse=True) def test_foo(): 打印('连接') 产生() 打印('断开连接') def test_one(): #如何获取()对象? 打印([locals()]) 断言1==1 您始终可以添加夹具作为参数,尽管自动使用: def test

我是学英语的新手。在下面的示例代码中。
当夹具处于
autouse
模式时,如何在
test\u one
函数中获取
A()
对象

导入pytest
导入时间
A类:
定义初始化(自):
self.abc=12
@pytest.fixture(autouse=True)
def test_foo():
打印('连接')
产生()
打印('断开连接')
def test_one():
#如何获取()对象?
打印([locals()])
断言1==1

您始终可以添加夹具作为参数,尽管
自动使用

def test_one(test_foo):
打印(测试)
断言1==1
如果出于某种原因不想使用fixture参数,则必须将对象保存到其他位置,以便能够从测试中访问它:

a=None
@pytest.fixture(autouse=True)
def test_foo():
全球a
a=a()
产量
a=无
def test_one():
印刷品(a)
断言1==1
如果使用一个测试类并将
a
放入一个类变量中以避免使用全局变量,这可能会更好一些,但是第一个变量仍然是首选变量,因为它将对象的定义本地化

除此之外,生成一个您无法访问的对象没有任何实际意义。您可以考虑<代码> utous是您的用例的正确选项。自动使用通常用于无状态设置/拆卸


如果您的用例是执行一些设置/拆卸操作(如连接/断开连接注释所建议的),并提供对对象的可选访问权限,当然这是可以的。

尽管有
自动使用,您始终可以将夹具添加为参数:

def test_one(test_foo):
打印(测试)
断言1==1
如果出于某种原因不想使用fixture参数,则必须将对象保存到其他位置,以便能够从测试中访问它:

a=None
@pytest.fixture(autouse=True)
def test_foo():
全球a
a=a()
产量
a=无
def test_one():
印刷品(a)
断言1==1
如果使用一个测试类并将
a
放入一个类变量中以避免使用全局变量,这可能会更好一些,但是第一个变量仍然是首选变量,因为它将对象的定义本地化

除此之外,生成一个您无法访问的对象没有任何实际意义。您可以考虑<代码> utous是您的用例的正确选项。自动使用通常用于无状态设置/拆卸


如果您的用例是执行一些设置/拆卸操作(如连接/断开连接注释所建议的),并提供对对象的可选访问权限,这当然是可以的。

我知道这种方法,但我不希望每次编写新测试函数时都将
test\u foo
参数传递到
test\u one
。@AnthonySottile-同意。我添加了一个相应的注释-当我添加这个时应该这样做…我知道这个方法,但我不想每次编写新的测试函数时都将
test\u foo
参数传递到
test\u one
。@AnthonySottile-同意。我添加了各自的注释-当我添加此注释时,应该这样做。。。