Я использую Python 2.6.6Python патч макет, кажется, называется, но утверждают, терпит неудачу
То, что я пытаюсь сделать, это заменить создание объекта с Мок, чтобы убедиться, что правильно звонки. Должно быть просто.
Мой модуль:
import dir.SubModule
class Cls(object):
def Start(self):
self.__obj = dir.SubModule.SubCls()
self.__obj.foo()
Мой Тест:
import MyModule
import unittest
from mock import Mock, MagicMock, patch
class MyTest(unittest.TestCase):
def setUp(self):
self.uut = MyModule.Cls()
def test_one(self):
with patch('dir.SubModule.SubCls', spec=True) as mockObj:
print "mock calls before"
print mockObj.mock_calls
self.uut.Start()
print "called: " + str(mockObj.called)
print "foo called: " + str(mockObj.foo.called)
print "call_count: " + str(mockObj.call_count)
print "call_args: " + str(mockObj.call_args)
print "args_list: " + str(mockObj.call_args_list)
print "mock calls:\n" + str(mockObj.mock_calls)
print "method calls:\n " + str(mockObj.method_calls)
Выход:
mock calls before:
[]
called: True
foo called: False
call_count: 1
call_args: call()
args_list: [call()]
mock calls:
[call(), call().foo()]
method calls:
[]
Но тест не пройден:
AssertionError: Expected call: foo()
Not called
Я не понимаю, как макет может сообщить, что были сделаны вызовы, но я не могу утверждать, что они были вызваны. Что мне не хватает?
EDIT: После добавления отчетов о всех показателях, кажется, есть что-то фундаментальное, что я не понимаю, что такое python mocks. Если foo() находится в списке вызовов, то почему счетчик вызовов только 1, и почему foo.called report «False»?
коде вы опубликовали, кажется, не соответствует коду на самом деле достаточно хорошо для нас, чтобы помочь вам. Похоже, что код, который вы опубликовали, имеет совершенно другой набор ошибок. – user2357112
Единственная ошибка, которую я обнаружил, заключалась в том, что мне не хватало объявления setUp() перед моим созданием объекта uut; в противном случае это код, который я запускаю, за исключением того, что я удалил другой ненужный объект и создание и использование переменных (что я доказал, потому что он закомментирован в моем коде.) – PfunnyGuy