Я использую mock из voidspace и пытаюсь выполнить некоторые тесты, используя unittest2, и поведение странно. Когда я использую "@ patch.object (Test, 'asd')" как патч, я получаю макет объекта в аргументах функции. Если я использую @ patch.object (Test, 'asd', new_fun) как patch, я не получаю один из параметров. Я использую mock-1.0.1Проблема с заданными объектами
Здесь вы можете увидеть небольшой образец кода, который иллюстрирует проблему. Я хочу попытаться понять, является ли эта проблема проблемой с тем, как я делаю патч, или если это проблема в библиотеке.
import unittest2 as unittest
from mock import patch
class Test:
def asd(self, a, b =""):
print "1"
class Test1:
def kk(self, l):
Test().asd("1")
def kk1(self, l):
Test().asd("1","1")
@patch.object(Test,'asd')
class MockClassUT(unittest.TestCase):
def test_stat_process(self, my_mock):
t = Test1()
def test_stat_process1(self, my_mock):
t = Test1()
def test_stat_process2(self, my_mock):
t = Test1()
def new_fun(*args, **kwargs):
print "1"
@patch.object(Test,'asd',new_fun)
class MockClassUT1(unittest.TestCase):
def test_stat_process(self, my_mock):
t = Test1()
t.kk("1")
my_mock.assert_called_with("k")
testloader = unittest.TestLoader()
testnames = testloader.getTestCaseNames(MockClassUT)
suite = unittest.TestSuite()
for name in testnames:
suite.addTest(MockClassUT(name))
testnames = testloader.getTestCaseNames(MockClassUT1)
for name in testnames:
suite.addTest(MockClassUT1(name))
print testnames
unittest.TextTestRunner(verbosity=2).run(suite)
Получаем ошибку 'TypeError: test_stat_process() принимает ровно 2 аргумента (1 задано)' - это то, что вы имеете в виду? –