Python2 Макет внутри основных методов - PullRequest
0 голосов
/ 14 января 2020

Как смоделировать методы класса, такие как main(self), который вызывает номера других методов?

У меня есть такой код:

def __init__(self, first_arg, second_arg):
    self.first_arg = first_arg
    self.second_arg = second_arg

def a(self):
    returns [1, 2]

def b(self, param_here):
    something = param_here + " stole my carrot"
    print(something)

def main(self):
    self.a()          # returns something
    self.b("Pablo")   # void
...
if __name__ == '__main__':
    tc = TheClass(first_arg, second_arg)

У меня есть такой тестовый пример:

import unittest
from mock import patch
import the_class

class TheClass(unittest.TestCase):
...
    def test_main(self):
        with patch('the_class.TheClass.main'):
            tc.a()
            tc.b("some parameter")

            tc.a.assert_called_with()
            tc.a.assert_any_call()

            tc.b.assert_called_with()
            tc.b.assert_any_call()

if __name__ == '__main__':
    tc = the_class.TheClass(test_first_arg, test_second_arg)
    unittest.main()

Но это бросает:

AttributeError: 'function' object has no attribute 'assert_any_call'

и

AttributeError: 'function' object has no attribute 'assert_called_with'

В основном я хочу издеваться внутри main методы, они вызываются (может быть, подсчитать, сколько раз они были вызваны ...) и проверить, что они сделали что-то с заданными параметрами. Как этого добиться?

Любая помощь приветствуется.

(Использование Python 2.6.6, макет модуля 1.0.0)

...