[英]Unittests MagicMock doesn't return value on call
I wonder why my code doesn't work properly:我想知道为什么我的代码不能正常工作:
class UtilsUnittests(TestCase):
def setUp(self) -> None:
# Mock LinearMetricsClient
self.patcher_metrics_client = patch('src.utils.Client')
self.mock_metrics_client = self.patcher_metrics_client.start()
self.mock_metrics_client.create = MagicMock(return_value=(200,{}))
def tearDown(self) -> None:
self.patcher_metrics_client.stop()
def test_get_report_data__successful(self):
data = get_report_data(arg_1, arg_2)
On call it will raise:随叫随到,它将引发:
ValueError: not enough values to unpack (expected 2, got 0)
On call it return just MagicMock object instead of the 200, {}
调用它只返回 MagicMock object 而不是200, {}
utils.py
file: utils.py
文件:
from external_lib.http_clients import Client
def get_report_data(report_query_params, obj_id):
metrics_client = Client(obj_id)
code, response_body = metrics_client.create(report_query_params, '/search')
response_body = json.loads(response_body)
...
When I print output of metrics_client.create(report_query_params, '/search')
it returns: ___<MagicMock name='Client().create()' id='4337409232'>
当我打印 metrics_client.create metrics_client.create(report_query_params, '/search')
的 output 时,它返回: ___<MagicMock name='Client().create()' id='4337409232'>
Structure is结构是
|- src
|--- src/utils.py
|- tests
|--- tests/test_main.py
As @mrBeanBremen suggested, I have changed the code a little to return_value logic:正如@mrBeanBremen 建议的那样,我将代码更改为 return_value 逻辑:
class UtilsUnittests(TestCase):
def setUp(self) -> None:
# Mock LinearMetricsClient
self.patcher_metrics_client = patch('src.utils.Client')
self.mock_metrics_client = self.patcher_metrics_client.start()
self.mock_metrics_client.return_value.create.return_value = MagicMock(return_value=(200,{}))
def tearDown(self) -> None:
self.patcher_metrics_client.stop()
def test_get_report_data__successful(self):
data = get_report_data(arg_1, arg_2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.