@pytest.fixture
def db():
    conn = connect()
    yield conn
    conn.rollback()
    conn.close()

按文件名顺序执行全部用例时中途失败,单独执行某一条却正常。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,用例之间共享了数据库或全局状态,前一条的副作用影响后一条。

「测试顺序依赖」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。

一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。

别只看报错的最后一行,往上看几行,真正的起因通常在上面。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。

处理上按这个顺序:每条用例独立准备与清理数据;使用事务回滚;避免依赖执行顺序。

改完只确认一件事:随机顺序执行全套用例都能通过,重复执行结果稳定。

作者 9823189