python - 在一个测试文件中导入之前模拟正在影响另一个测试文件
问题描述
我有一个在导入时有副作用的类:它使用来自已部署基础架构的值填充一个字段。它基本上归结为:
class MyModel:
class Meta:
table_name = get_param("table_name")
我想MyModel
在离线测试中使用实例,所以我需要确保 boto3 实际上没有运行生产get_param
代码。我通过get_param
在这些测试中模拟来做到这一点:
with patch("….get_param"):
from … import MyModel
def test_…
笨重,但它有点工作。问题是,如果我pytest
先运行这个测试文件,然后运行验收测试文件(确实需要使用 real get_param
),验收测试最终会得到一个模拟版本get_param
(颠倒文件顺序使两个测试都通过)。验收测试本身运行良好,但我宁愿不要基于这样一个奇怪的前提拆开测试套件。有没有办法避免这种命名空间污染?
解决方案
看起来我不明白 Python 导入是如何工作的。
推荐阅读
- flutter - 如何在颤振中将欢迎文本放在用户名之前?
- python-3.x - PYTHON FLASK - request.files 显示为文件未找到,即使它退出
- loops - 在while循环中使用LESS_EQUAL进行CMake比较不起作用
- scala - 处理 Scala 列表中的类型擦除
- sql - 如何测试这个漏洞?
- c# - 如何在 Visual Studio SDK 中移动文档并确保通知任何源代码控制提供程序
- javascript - 如何只带文本和货币符号的价格值?
- python - 狮身人面像:没有从同一目录中找到 python 文件
- google-cloud-platform - 从试用版升级后,Kubernetes 集群似乎已被删除
- android - 如何使用 Kotlin 过滤 RecycleView