【pytest】setup_class 上为什么不能使用 fixture

回首
回首
回首
订阅者
268
文章
0
评论
测试交流1 263字数 145阅读0分29秒阅读模式

有一个 Device 对象,我只想在这个测试类中实例化一次,并且让测试类里面的每个测试方法都能使用

我的 conftest.py 是这样的

【pytest】setup_class 上为什么不能使用 fixture插图
文章源自玩技e族-https://www.playezu.com/214876.html

然后我将这个方法在 setup_class 中使用,想存为变量,在测试方法中打印出来

【pytest】setup_class 上为什么不能使用 fixture插图1
文章源自玩技e族-https://www.playezu.com/214876.html

抛出了异常

【pytest】setup_class 上为什么不能使用 fixture插图2
文章源自玩技e族-https://www.playezu.com/214876.html

很疑惑为什么不能在 setup_class 不能使用
但是我在测试方法上使用则没问题

【pytest】setup_class 上为什么不能使用 fixture插图3
文章源自玩技e族-https://www.playezu.com/214876.html

控制台输出正常

【pytest】setup_class 上为什么不能使用 fixture插图4
文章源自玩技e族-https://www.playezu.com/214876.html

请问假如想要这样实现应该以什么样的方式文章源自玩技e族-https://www.playezu.com/214876.html软件测试工程师文章源自玩技e族-https://www.playezu.com/214876.html文章源自玩技e族-https://www.playezu.com/214876.html

 
    • 木子健
      木子健 9

      conftest.py 使用 yield 关键字,不是 returnyield 不香么?简单说就是并不是所有的方法都能使用 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 方法

      但是这个返回值是有类型的 ()

      得到了返回值却点不了方法(没有提示 )怎么样才能出提示
      你可以在你获取返回值的地方显示的标注它的类型

    匿名

    发表评论

    匿名网友
    确定

    拖动滑块以完成验证