如何在单元测试期间模拟另一个模块内的方法
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}
在我的一个测试用例中,流程要求客户提供流程,其中调用转到 api.py 文件,其中响应从函数 create_t_customer 中保存,如下所示:
在 api.py 文件中,它使用从文件 customer.py
导入的方法 create_t_customerresponse = 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}