pytest8.x版本不兼容历史项目代码中conftest写法的兼容性问题
·
问题表现:
● 我从python3.7替换到Python3.12后(实际升级造成问题的原因是pytest从7.0版本升级了8.0版本)。执行UI自动化测试用例,报错无法获取到根目录conftest.py里面的全局fixture方法(启动浏览器和登录方法)。
问题原因:
● 本次问题的唯一核心原因是pytest 8.x 以上版本的conftest.py加载规则重大变更:当测试用例所在目录存在非空的conftest.py时,pytest 8.x 会默认终止向上递归查找更高层级的 conftest.py 文件,直接导致子目录的 fixture 上下文无法感知根目录 conftest.py 中定义的browser、class_login等全局 fixture。而8.x以前版本的pytest是默认支持向上递归查找更高层级的conftest.py文件的,所以历史项目都是默认这样的写法。
解决方案:
● 在测试用例的子目录conftest.py文件最上方强制引用上层conftest.py内的内容
from UI自动化.conftest import *
from UI自动化.testcases.ebuilder.conftest import *
更多推荐
所有评论(0)