python:指定模拟模块属性的返回值

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

我有一个模块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 = 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是的,这是需要做的。谢谢,实际上我只需要设置模拟模块的属性值