Obecnie próbuję wyszydzić metodę open() wbudowaną w Pythonie dla testu. Jednak ja zawsze kończy się coraz awarię i ten wynikający wiadomość:AttributeError: __exit__ kiedy próbuję wyśmiewać funkcje kompilacji
File "/opt/home/venv/lib/python2.7/site-packages/nose-1.3.0-py2.7.egg/nose/result.py", line 187, in _exc_info_to_string
return _TextTestResult._exc_info_to_string(self, err, test)
File "/opt/python-2.7.3/lib/python2.7/unittest/result.py", line 164, in _exc_info_to_string
msgLines = traceback.format_exception(exctype, value, tb)
File "/opt/python-2.7.3/lib/python2.7/traceback.py", line 141, in format_exception
list = list + format_tb(tb, limit)
File "/opt/python-2.7.3/lib/python2.7/traceback.py", line 76, in format_tb
return format_list(extract_tb(tb, limit))
File "/opt/python-2.7.3/lib/python2.7/traceback.py", line 101, in extract_tb
line = linecache.getline(filename, lineno, f.f_globals)
File "/opt/home/venv/lib/python2.7/linecache.py", line 14, in getline
lines = getlines(filename, module_globals)
File "/opt/home/venv/lib/python2.7/linecache.py", line 40, in getlines
return updatecache(filename, module_globals)
File "/opt/home/venv/lib/python2.7/linecache.py", line 127, in updatecache
with open(fullname, 'rU') as fp:
AttributeError: __exit__
Tu jest mój kodu testu:
m = mox.Mox()
m.StubOutWithMock(__builtin__, 'open')
mock_file = m.CreateMock(__builtin__.file)
open(mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(mock_file)
mock_file.write(mox.IgnoreArg()).MultipleTimes()
mock_file.close()
write_file_method()
Więc dodaję wiersz z napisem m.StubOutWithMock (__ builtin__, 'close')? Próbowałem, ale mam ten sam błąd, chyba że umieściłem go w niewłaściwym miejscu (zaraz po m.StubOut 'open') – user2253332
Proszę zobaczyć zaktualizowaną odpowiedź – mbatchkarov
Metoda, którą chcę przetestować, tworzy plik i zapisuje do niego, więc nie należy przekazywać obiektu pliku ani niczego. Nie jestem pewien, jak inaczej to przetestować. – user2253332