python - 如何在测试中为多个功能重用相同的模拟
问题描述
我有一个测试文件,我在其中为每个函数重用相同的模拟。
@mock.patch.object(...)
def xyz(mock_xyz):
mock_xyz.side_effect = lambda x, y: None
....
@mock.patch.object(...)
def abc(mock_xyz):
mock_xyz.side_effect = lambda x, y: None
....
@mock.patch.object(...)
def lmn(mock_xyz):
mock_xyz.side_effect = lambda x, y: None
....
.
.
.
如何避免每次都定义模拟?PS:我在示例中只使用了一个模拟,但我在 6 种测试方法中使用了相同的四个模拟。
解决方案
您可以在其中定义它setUp()
并使其成为您的TestCase
类的成员:
class MyTest(unittest.TestCase):
def setUp(self):
self.mock_xyz = mock.patch.object(...)
self.mock_xyz.side_effect = lambda x, y: None
def xyz(self):
with self.mock_xyz:
# Do test stuff
....
推荐阅读
- python - Python Pandas:将 2 个字段日期 + 时间转换为 1 个日期时间字段
- c# - 尝试使用 20 GB 的 .pst 文件登录 RDOPstStore
- java - 多平台分布式日志聚合工具
- c# - 使用多个带有 into 的 LINQ 语句,因为左外连接的 DefaultIfEmpty() 不起作用
- android - UnsatisfiedLinkError:缺少 libmodpdfium.so
- c++ - 优先 gRPC 调用以避免服务器过载
- c# - 在 C# 中使用用户的密钥通过 sha1 算法进行散列
- php - 准备好的语句中的 bind_param() 错误报告
- c++ - 我的 lambda 在复制构造期间没有正确转换捕获的“this”
- angular - 重构混乱的订阅以便进一步订阅