Как MagicMock функции внутри функции Python - PullRequest
1 голос
/ 30 сентября 2019

У меня есть модуль A, который содержит следующие две функции:

def my_func():
    my_dict = {"key1":100, "key2": 100}
    send_result(dicts=my_dict)


def send_result(dicts):
    print(dicts)

Я написал пример модульного теста, как показано ниже:

from unittest.mock import MagicMock
import A
def test_send_results(self, dicts):
    self.assertGreater(len(dicts), 0)

def test_my_func(self):
    A.send_result = MagicMock(wraps=self.test_send_results)
    A.my_func()

И когда я запускаю модульВ тестовом примере я получаю ошибку ниже, хотя dicts содержит значение:

TypeError: test_send_results() missing 1 required positional argument: 'dicts'

1 Ответ

0 голосов
/ 30 сентября 2019

В соответствии с предложением Энтони используйте patch.object. Пример приведен ниже:

import unittest
from unittest import mock
import A

class MyTestClass(unittest.TestCase):

    def test_send_results(self, dicts):
        self.assertGreater(len(dicts), 0)

    @mock.patch.object(self, 'test_send_results')
    def test_my_func(self, mock_func):
        mock_func.return_value = 'something'
        A.my_func()
...