pytest 中,进行多进程跑时,我想定义在 conftest 文件中的 fixture 夹具只在一个线程中跑一次即可,而不想多次进行跑,如图,具体怎么实现2022-08-27 15:52:10€¶婷姐儿♛ €¶婷姐儿♛订阅者关注262文章0评论 测试交流1 224字数 10阅读0分2秒阅读模式软件测试功能测试报告文章源自玩技e族-https://www.playezu.com/213856.html文章源自玩技e族-https://www.playezu.com/213856.html 复制文章 点赞 登录收藏
未知地区 1F
写个单例你的线程是怎么设计的?
pytest 中,进行多进程跑时,我想定义在 conftest 文件中的 fixture 夹具只在一个线程中跑一次即可,而不想多次进行跑
具体确定想怎样呢?正好前段时间用 pickle 和 FileLock 做了这个改造,步骤大概如下(代码暂时没办法贴上来):
封装一个登录方法,并把登录结果保存到 pickle 文件中,同时通过 filelock 来做锁定保护。
在登录的 fixture 中,先尝试去读取 pickle 中的登录结果。
如果文件已锁定且读取成功,就返回登录结果。这时候说明其他 session 已经登录成功;
如果文件已锁定但登录结果为空,则说明其他 session 正在登录但是还没完成。这时候会返回 none,并在上层做一个 30 秒的 for 循环进行轮询等待。
如果文件不存在,则说明还没有 session 尝试登录。这时候就调用步骤 1 的封装方法进行登录并写入登录结果。
官方是有例程的,根据业务改造一下就可以用了我也是基于这个官方教程去改造的,把保存的文件从 JSON 改成 pickle 就可以了