在对使用该模块的另一个模块进行单元测试时,如何模拟完整的模块及其属性?

时间:2019-07-16 08:30:34

标签: python-3.x mocking python-unittest python-packaging

我想对从自定义包中导入特定模块的模块进行单元测试。虽然我在测试函数中对其进行了模拟,但是调用该函数时并没有在我的测试函数中调用该模拟函数。

我尝试使用 sys.modules ['RR.nx.expression'] = Mock() 但不起作用

test.py

import sys
import unittest
from unittest.mock import Mock
from unittest.mock import patch
from RR.nx import expression   <---here
from atools.RRtemp import nx_expr_utilities

class Test(unittest.TestCase):

    def test_get_value_from_expression_object(self):
        expression.get_value = Mock(return_value = [10,'mm']) <--here this doesnt work
        test_obj='dummy'
        self.assert_equal(10,nx_expr_utilities.get_value_from_expression_object(test_obj))

    if __name__ == "__main__":
        sys.modules['RR.nx.expression'] = Mock() <-tried to mock the whole module
        unittest.main()

function.py

    from RR.nx import expression
    def get_value_from_expression_object(expr_object):
        value, units = expression.get_value(expr_object)<-i wanna mock this
        return value

在function.py中,真正的expression.get_value()被称为eveth,尽管我在测试函数中对其进行了嘲笑。 非常感谢您的帮助。

0 个答案:

没有答案