Я работал над «Изучай Python: трудный путь», 2-е издание, и это было потрясающе. Мой вопрос связан с Упражнением 49 (http://learnpythonthehardway.org/book/ex49.html),, которое касается написания носовых юнит-тестов, охватывающих код, приведенный в книге. Я пытался написать тест, который охватывает эту функцию:
def parse_subject(word_list, subj):
verb = parse_verb(word_list)
obj = parse_object(word_list)
return Sentence(subj, verb, obj)
Я пытался запустить этот тест:
from nose.tools import *
from ex48 import engine
def test_parse_subject():
word_list = [('verb', 'verb'),
('direction', 'direction')]
test_subj = ('noun', 'noun')
test_verb = ('verb', 'verb')
test_obj = ('direction', 'direction')
assert_equal(engine.parse_subject(word_list, ('noun', 'noun')),
engine.Sentence(test_subj, test_verb, test_obj))
Но возвращается с ошибкой, поскольку два объекта Sentence не являются EXACT одним и тем же объектом:
⚡ nosetests
.....F..........
======================================================================
FAIL: tests.engine_tests.test_parse_subject
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/nose/case.py", line 187, in runTest
self.test(*self.arg)
File "/Users/gregburek/code/LPTHW/projects/ex48/tests/engine_tests.py", line 59, in test_parse_subject
engine.Sentence(test_subj, test_verb, test_obj))
AssertionError: <ex48.engine.Sentence object at 0x101471390> != <ex48.engine.Sentence object at 0x1014713d0>
----------------------------------------------------------------------
Ran 16 tests in 0.018s
FAILED (failures=1)
Как я могу использовать нос, чтобы проверить, что два объекта должны быть одинаковыми?