jie*_*jie 6 python pytest python-3.x
在下面的示例代码中,当灯具处于模式时,如何在函数A()中获取对象?test_oneautouse
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
Run Code Online (Sandbox Code Playgroud)
MrB*_*men 10
尽管存在以下情况,您始终可以添加夹具作为参数autouse:
def test_one(test_foo):
print(test_foo)
assert 1 == 1
Run Code Online (Sandbox Code Playgroud)
如果您出于某种原因不想使用固定参数,则必须将对象保存在其他位置才能从测试中访问它:
a = None
@pytest.fixture(autouse=True)
def test_foo():
global a
a = A()
yield
a = None
def test_one():
print(a)
assert 1 == 1
Run Code Online (Sandbox Code Playgroud)
a如果使用测试类并放入类变量以避免使用全局 var,这可能会好一点,但第一个变体仍然是首选,因为它本地化了对象的定义。
除此之外,生成一个您无权访问的对象没有任何实际意义。您可以考虑这是否autouse是适合您的用例的正确选项。自动使用通常用于无状态设置/拆卸。
如果您的用例是无论如何都要进行一些设置/拆卸(如连接/断开注释所建议的),并提供对对象的可选访问权限,当然这是可以的。
| 归档时间: |
|
| 查看次数: |
3433 次 |
| 最近记录: |