【发布时间】:2021-08-17 12:38:16
【问题描述】:
我对下面的代码有疑问。我想模拟不同文件中的函数以在 FUNCTION_MAPPING 部分进行单元测试。
import module.module2 as module_name
FUNCTION_MAPPING = {
1: module_name.foo,
2: module_name.foo2,
3: module_name.foo3
}
def my_func(number):
function_call = FUNCTION_MAPPING[number]
result = function_call()
return result
由于某种原因,我无法模拟这些功能。我已经尝试了我所知道的所有可能的方法。如果可能的话,我不想更改上面的代码。
foo、foo2 和 foo3 内部代码可以是任何 print(1)、print(2) 等
单元测试代码:
@patch("module_of_the_code_above.module_name.foo",return_value="Test")
def test_my_func(self,mocked_foo):
result = my_func(1)
nose_tools.assert_equal(result,"Test")
【问题讨论】:
-
你有错误吗? foo、foo2、foo3函数的代码是什么?
-
请提供一个最小的工作示例,包括
module.module2的代码和您的单元测试。 -
module.module2 只是函数 foo、foo2、foo3 所在的模块。这些函数的内部代码与问题无关。
-
它是相关的,因为导入函数的方式很重要 -
from foo import bar和import foo.bar在您的代码和单元测试中具有不同的命名空间结果。请提供复制您的错误的确切代码(包括导入的函数和单元测试),以便我们对其进行测试,而不是盲目地假设您是如何定义事物的。 -
我已经更新了这个问题,但这是我能做的最好的。我不能分享原始代码:)
标签: python unit-testing mocking