Python издевательство над c объекта - PullRequest
0 голосов
/ 25 февраля 2020

Здравствуйте, меня зовут UserName, и я не могу издеваться = (

У меня есть следующий код:

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")

, но все равно этого не происходит mock

Я читал различные связанные вопросы здесь, и это похоже на проблему с путями, но не могу понять.

1 Ответ

0 голосов
/ 26 февраля 2020

OK. Я перестаю пытаться протестировать реализацию, вместо этого начинаю тестировать интерфейс.

@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)

Надеюсь, это кому-нибудь пригодится.

...