pytest 中,进行多进程跑时,我想定义在 conftest 文件中的 fixture 夹具只在一个线程中跑一次即可,而不想多次进行跑,如图,具体怎么实现

€¶婷姐儿♛
€¶婷姐儿♛
€¶婷姐儿♛
订阅者
262
文章
0
评论
测试交流1 224字数 10阅读0分2秒阅读模式

pytest 中,进行多进程跑时,我想定义在 conftest 文件中的 fixture 夹具只在一个线程中跑一次即可,而不想多次进行跑,如图,具体怎么实现插图
软件测试功能测试报告文章源自玩技e族-https://www.playezu.com/213856.html文章源自玩技e族-https://www.playezu.com/213856.html
 
    • 赵晨成
      赵晨成 9

      写个单例你的线程是怎么设计的?
      pytest 中,进行多进程跑时,我想定义在 conftest 文件中的 fixture 夹具只在一个线程中跑一次即可,而不想多次进行跑

      具体确定想怎样呢?正好前段时间用 pickle 和 FileLock 做了这个改造,步骤大概如下(代码暂时没办法贴上来):

      封装一个登录方法,并把登录结果保存到 pickle 文件中,同时通过 filelock 来做锁定保护。
      在登录的 fixture 中,先尝试去读取 pickle 中的登录结果。
      如果文件已锁定且读取成功,就返回登录结果。这时候说明其他 session 已经登录成功;
      如果文件已锁定但登录结果为空,则说明其他 session 正在登录但是还没完成。这时候会返回 none,并在上层做一个 30 秒的 for 循环进行轮询等待。
      如果文件不存在,则说明还没有 session 尝试登录。这时候就调用步骤 1 的封装方法进行登录并写入登录结果。
      官方是有例程的,根据业务改造一下就可以用了我也是基于这个官方教程去改造的,把保存的文件从 JSON 改成 pickle 就可以了

    匿名

    发表评论

    匿名网友
    确定

    拖动滑块以完成验证