python:指定模拟模块属性的返回值
我有一个模块ex,它有多个属性,另一个模块使用这些属性,如下所示python:指定模拟模块属性的返回值,python,python-3.x,unit-testing,python-unittest,python-mock,Python,Python 3.x,Unit Testing,Python Unittest,Python Mock,我有一个模块ex,它有多个属性,另一个模块使用这些属性,如下所示 import ex def use_ex(attr): z = getattr(ex,attr) #Do something with z 在我的测试文件中,我模拟ex,因为我无法在测试环境中导入它 sys.modules['ex'] = Mock() 当我编写测试以供使用时,如何指定ex.attr的返回值?您可以这样指定模拟返回值: return_value = whatyouwant my_mock = M
import ex
def use_ex(attr):
z = getattr(ex,attr)
#Do something with z
在我的测试文件中,我模拟ex,因为我无法在测试环境中导入它
sys.modules['ex'] = Mock()
当我编写测试以供使用时,如何指定ex.attr的返回值?您可以这样指定模拟返回值:
return_value = whatyouwant
my_mock = Mock()
my_mock.return_value = return_value
sys.modules['ex'] = my_mock
sys.modules['ex'].attr.return\u value=所需的\u值
?@Goyo不起作用您能提供更多详细信息吗?您需要什么样的返回值?您的代码似乎没有调用z
,因此没有机会提供返回值。可以直接在模拟对象上设置属性<代码>ex=Mock();ex.x=3
。如果您只需要一个普通的值,那么还有unittest.mock.PropertyMock
。适合我。也许您想要sys.modules['ex'].attr=所需的值
?但这只是值,而不是返回值。@MisterMiyagi是的,这是需要做的。谢谢,实际上我只需要设置模拟模块的属性值