有一个 Device 对象,我只想在这个测试类中实例化一次,并且让测试类里面的每个测试方法都能使用
我的 conftest.py 是这样的
然后我将这个方法在 setup_class 中使用,想存为变量,在测试方法中打印出来
抛出了异常
很疑惑为什么不能在 setup_class 不能使用 但是我在测试方法上使用则没问题
控制台输出正常
请问假如想要这样实现应该以什么样的方式
conftest.py 使用 yield 关键字,不是 return
yield 不香么?
简单说就是并不是所有的方法都能使用 fixture 作为参数。 具体的作用域 pytest 源码里的注释里有写,可以参考。 另外为什么还要有 setup_class 呢,都用 fixture 不就没这问题了。
类似 setup_class 这样的前后置不允许传参,用例层调用 driver def test_008(self, connectDevice): pass
没懂 你在 fixture 中加个 autouse=True,就可以在每个 test_case 里直接调 get_device_object 了啊,每个 class 只执行了一次 fixture,这样返回的实例其实都是同一个的
感谢各位大佬的指导,发现 fixture 推崇的是 不使用 setup 和 teardown 等方法, 问题已经解决
还有一个疑惑,网上找了半天没有找到答案 假如 fixture 使用了 yield 关键字,返回了一个 Device 对象 在用例中调用 fixture 方法 但是这个返回值是有类型的 () 得到了返回值却点不了方法(没有提示 )怎么样才能出提示
你可以在你获取返回值的地方显示的标注它的类型
难道没发现 setup_class 方法少一个类装饰器
这个问题你解决了吗 我也遇到了
这个错误你解决了吗 我也遇到了
学习下