首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免"AttributeError: cls在会话作用域上下文中不可用“使用request.cls和scope=”会话“?

如何避免"AttributeError: cls在会话作用域上下文中不可用“使用request.cls和scope=”会话“?
EN

Stack Overflow用户
提问于 2022-11-25 13:37:06
回答 1查看 28关注 0票数 0

我有下一个构造:1. BaseClass和治具

代码语言:javascript
复制
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

代码语言:javascript
复制
class TestClass(BaseClass):
    def awesome_test(self):
        value = self.instance.get_value("parameter")
        assert value == "correct result"

问题:如果我想在实际的测试中重用类的一个实例来保存这种构造,参数scope=“会话”和在固定环境中的输出,我如何避免/解决一个错误"AttributeError: cls在会话范围内不可用“(如果可能的话)?

我试过:

  1. 创建两个固定装置:一个用于设置和创建类实例,另一个用于生成和关闭连接
EN

回答 1

Stack Overflow用户

发布于 2022-11-28 19:34:06

将会话作用域夹具作为类中的方法使用并不是一个好主意,这给人的印象是它可以访问类或类实例,而它没有。

相反,编写类外部的会话作用域夹具,并yield创建的对象。Pytest将缓存对象并将其传递给任何需要它的测试:

代码语言:javascript
复制
@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"

这也使基类过时。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74573662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档