fixture 写好了,测试却像没看见它一样。在 Playwright + Pytest 框架里,这种“写了不生效”的情况并不少见,常见的有五类现场,每一类都对应一行修法。

打开网易新闻 查看精彩图片

第一类,函数签名里根本没请求这个 fixture。没在参数列表里点名,框架自然不会注入。修法只有一行:把 fixture 名加进测试函数的签名。

第二类,同名覆盖。两个 fixture 撞了名字,实际生效的可能不是你以为的那个。排查时先确认调用链上到底是哪一个在起作用。

第三类,作用域写错。scope 不匹配,fixture 的生效范围和测试的预期对不上,表现就是“该来的时候没来”。

第四类,用 return 而不是 yield。需要清理逻辑的 fixture 若只写 return,收尾环节就无从挂载,行为随之偏离预期。

第五类,hook 没能拿到 funcargs。钩子函数里取不到参数,fixture 的注入链条在这里断掉。

五类现场,各自配一行修法和一条排查命令。先定位属于哪一类,再动手改,比反复重写 fixture 有效得多。