我是新来学习 pytest 的。在下面的示例代码中。
我怎样才能得到A()
对象在test_one
夹具处于状态时的功能autouse
mode?
import pytest
import time
class A:
def __init__(self):
self.abc = 12
@pytest.fixture(autouse=True)
def test_foo():
print('connecting')
yield A()
print('disconnect')
def test_one():
#how can i get A() object?
print([locals()])
assert 1 == 1
尽管autouse
:
def test_one(test_foo):
print(test_foo)
assert 1 == 1
如果您出于某种原因不想使用固定参数,则必须将对象保存在其他位置以便能够从测试中访问它:
a = None
@pytest.fixture(autouse=True)
def test_foo():
global a
a = A()
yield
a = None
def test_one():
print(a)
assert 1 == 1
如果使用测试类并放置,这可以做得更好一点a
在类变量中以避免使用全局 var,但第一个变体仍然是首选,因为它本地化了对象的定义。
除此之外,生成一个您无权访问的对象没有任何实际意义。您可以考虑如果autouse
是适合您的用例的正确选择。自动使用通常用于无状态设置/拆卸。
如果您的用例是无论如何都要进行一些设置/拆卸(如连接/断开注释所建议),并提供对对象的可选访问权限,当然这是可以的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)