Для процедур «что-то делать» обычно включает вызовы API или другие манипуляции с объектами.
Например, процедура может записать строку в файл. Он использует вызовы File I / O API (или объект File IO), чтобы выполнить «запись строки».
То, что вы хотите сделать, это создать «фиктивный» объект, который будет заменять Файл. Объект Mock обладает достаточной функциональностью, чтобы собрать результаты теста и сделать их видимыми для утверждения. Не перезаписывайте свои ложные объекты, это крысиная нора потерянного времени.
В Python мы делаем такие вещи.
class MockFile( object ):
def __init__( self, aFileName, aMode ):
self.name= aFileName
self.mode= aMode
self.buffer= None
def write( self, aRow ):
self.buffer= str(aRow)
Теперь мы можем предоставить этот фиктивный файл для нашей процедуры вместо реального файла. Кроме того, мы можем утверждать, что произошло.
class TestSomeProcedure( unittest.TestCase ):
def testWrite( self ):
mockFile= MockFile( "name", "w" )
theProcedureImTesting( args, args, args, mockFile )
self.assertEquals( "The Row It Was Supposed to Write\n", mockFile.buffer )