【问题标题】:Python mock func of an obj一个 obj 的 Python 模拟函数
【发布时间】:2020-02-25 14:03:58
【问题描述】:

你好,我的名字是用户名,我不能模拟 =(

我有下一个代码:

app/worker/dataObj.py

class DataObj:

    def __init__(self, data: dict):
        if 'assignee' in data:
            self.users = self.get_users()
            print(self.users)    

    def get_users(self):
        users = requests.get(url=URL, headers=HEADERS)
        return json.loads(users.text)

app/test/test_dataObj.py

import unittest
from app.worker.dataObj import DataObj
app.test.test_data import test_data
unittest.mock import patch


TestDataObj(unittest.TestCase):

    setUp(self):
        data = test_data.data_for_dataobj
        dataobj = DataObj(self.data)

    @patch.object(DataObj, 'get_users')
    test_dataobj(self, gu):
        gu.return_value = {'user1': 111, 'User2': 222}
        print(gu)
        self.assertEqual(self.dataobj.tags, ["11", "22", "401", "88888"])

我也尝试这样的路径:

@patch("app.worker.dataObj.requests.get")
@patch("app.worker.dataObj.DataObj.get_users")

但它仍然没有模拟

我在这里阅读了不同的相关问题,这似乎是一个路径问题,但无法弄清楚。

【问题讨论】:

    标签: python mocking python-unittest


    【解决方案1】:

    好的。我不再尝试测试实现,而是开始测试接口。

    @patch("app.worker.dataObj.requests.get")
    def test_dataobj_assignee(self, mock_req):
        mock_req.return_value.text = json.dumps(test_data.get_users_return)
        self.dataobj = DataObj(self.test_data.assignee)
        self.assertEqual(self.dataobj.assignee, 1130000021382371)
    

    希望它对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-08-13
      • 2018-09-04
      • 2013-04-14
      • 1970-01-01
      • 1970-01-01
      • 2022-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多