python - 如何使用一次声明/定义 @patch 并在测试类中的每个单元测试中使用它
问题描述
我有一个代码案例,我必须从多个数据库表中提取数据。我一直在使用patch
frommock package
来编写单元测试用例。在测试用例中模拟数据库时,我在每个测试中都使用补丁,每个类大约有 10-15 个测试。有什么方法可以声明@patch
一次并将其分配给变量并使用变量而不是@patch
在每个测试中使用。例子:
@patch("py-repo.module.class.get_data_from_db_1",
side_effect=mock_method1)
@patch("py-repo.module.class.get_data_from_db_2",
side_effect=mock_method2)
@patch("py-repo.module.class.get_data_from_db_3",
side_effect=mock_method3)
def test_case_1(self, mock_1, mock_2, mock_3):
self.assertEqual("some outputs",object("some inputs"))
解决方案
patch()
非常灵活。您当前将它用作函数装饰器,但它也可以是类装饰器。然后它将期望该类上的每个测试方法都接受相同的模拟对象。
如果您不想为每个测试方法声明参数,您还可以从测试类的方法中调用修补程序的start()
方法setUp()
,并将模拟对象存储在成员变量中。请务必使用addCleanup()
来调用stop()
。
另一种选择:编写一个自定义上下文库,使用 with 块中的所有补丁,并返回到测试方法。
推荐阅读
- flutter - Dart:为什么颜色上的 add 方法不起作用?你为什么不给我加橘子?
- list - Flutter Dart / 数据列表的大小
- .net - 使用 iText 7 阅读希伯来语 PDF 获得 Gibrish
- c++ - 通过 pybind11 实现正确的相等运算符
- javascript - 当使用 WEBRTC 在对等点之间流式传输视频时,永远不会调用 ontrack 函数
- javascript - discord.js 返回函数返回:未定义
- docker - 我更改了 dotnet core 5 应用程序的文件夹结构,现在我的 dockerfile 错误
- firebase - 从 Cloud Firestore 读取:缺少权限或权限不足。在 Xamarin 表单应用程序中
- python - 附加到列表但仅存储最后一个值
- powershell - 如何更改 Chocolatey 的安装位置?