首页/开发/软件测试速查/pytest monkeypatch 临时替换
自动化测试66 条

pytest monkeypatch 临时替换

monkeypatch 夹具在用例范围内临时替换属性、字典项与环境变量,用例结束后自动还原;适合隔离时间、网络地址与外部依赖。

软件测试速查开发更新于 2026-10-12

替换示例

替换示例
def test_api_url(monkeypatch):
    monkeypatch.setenv("API_URL", "http://localhost:9999")
    monkeypatch.setattr("app.client.TIMEOUT", 0.1)
    assert read_api_url() == "http://localhost:9999"
setattr 用「模块路径字符串」形式,避免提前导入导致替换目标错位。

易错点

  • 手工修改全局状态后还原遗漏,影响后续用例
  • 对已导入对象的副本做替换,实际调用路径并未被改写

数据来源与参考

  • pytest 官方文档:Monkeypatching/mocking modules and environments
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌