如何在单元测试期间模拟另一个模块内的方法

How to mock a method inside another module during unit testing

在我的一个测试用例中,流程要求客户提供流程,其中调用转到 api.py 文件,其中响应从函数 create_t_customer 中保存,如下所示:

在 api.py 文件中,它使用从文件 customer.py

导入的方法 create_t_customer
response = create_t_customer(**data)

在customer.py文件中函数代码是

def create_t_customer(**kwargs):
    t_customer_response = Customer().create(**kwargs)
    return t_customer_response

我想在单元测试中模拟函数 create_t_customer。 目前我已经尝试了以下但似乎没有用

class CustomerTest(APITestCase):
    @mock.patch("apps.dine.customer.create_t_customer")
    def setUp(self,mock_customer_id):
        mock_customer_id.return_value = {"customer":1}

但这不能模拟函数。

您应该在导入的文件中模拟它。例如,您在 customer.py 中声明了 create_t_customer,并在 api.py 中使用了它。你应该从 api 而不是像这样的 customer 模块模拟它。

class CustomerTest(APITestCase):
    @mock.patch("x.y.api.create_t_customer")
    def test_xyz(self, mock_customer_id):
        mock_customer_id.return_value = {"customer":1}