私は Learn Python the Hard Way 2nd Ed に取り組んできましたが、素晴らしいものでした。私の質問は、演習 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))
しかし、2 つの Sentence オブジェクトがまったく同じオブジェクトではないため、エラーが返されます。
⚡ 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)
2 つのオブジェクトが同じであることを確認するには、nose をどのように使用すればよいですか?