Как смоделировать методы класса, такие как 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)