我有下一个构造:1. BaseClass和治具
class BaseClass:
instance = None
@pytest.fixture(scope="session", autouse=True)
def setup_and_teardown(self, request):
request.cls.instance = AnotherClass()
request.cls.instance.open_session()
yield
self.instance.close_session()2.带有测试的TestClass
class TestClass(BaseClass):
def awesome_test(self):
value = self.instance.get_value("parameter")
assert value == "correct result"问题:如果我想在实际的测试中重用类的一个实例来保存这种构造,参数scope=“会话”和在固定环境中的输出,我如何避免/解决一个错误"AttributeError: cls在会话范围内不可用“(如果可能的话)?
我试过:
发布于 2022-11-28 19:34:06
将会话作用域夹具作为类中的方法使用并不是一个好主意,这给人的印象是它可以访问类或类实例,而它没有。
相反,编写类外部的会话作用域夹具,并yield创建的对象。Pytest将缓存对象并将其传递给任何需要它的测试:
@pytest.fixture(scope="session", autouse=True)
def instance():
inst = AnotherClass()
inst.open_session()
yield inst
inst.close_session()
class TestClass:
def awesome_test(self, instance):
value = instance.get_value("parameter")
assert value == "correct result"这也使基类过时。
https://stackoverflow.com/questions/74573662
复制相似问题