我正在Zed A Shaws的《学习Python的艰难方法》中练习48。
在许多事情中,此练习涉及使用Nosetests和Assert_Equal进行单元测试。
使用测试至上的开发代码风格,指示我们创建一个模块,该模块将接受用户的高级输入。
之前,我们已经提供了测试代码,以提供线索和帮助创建脚本。
这是我创建的模块: (为简洁起见,我从词典词典中删除了琐碎的对子)
lexicon = {
'north': 'direction',
'go': 'verb',
'the': 'stop',
'bear': 'noun',
'1234': 'number',
'3': 'number',
'91234': 'number',
'ASDFADFASDF': 'error',
}
def convert_number(s):
try:
return int(s)
except ValueError:
return None`
def scan(sentence):
words = sentence.split()
result = []
for word in words:
if lexicon[word] in ['direction', 'noun', 'verb', 'stop', 'error']:
pair = (lexicon[word], word)
result.append(pair)
elif lexicon[word] in 'number':
integer = convert_number(word)
number_pair = (lexicon[word], integer)
result.append(number_pair)
return result
这是单元测试中与我的问题有关的代码块:
`def test_numbers():
assert_equal(lexicon.scan("1234"), [('number', 1234)])
result = lexicon.scan("3 91234"),
assert_equal(result, [('number', 3),
('number', 91234)])`def test_numbers():
我目前很难推断出为什么我得到这个特定的AssertionError:
([('number', 3), ('number', 91234)],) != [('number', 3),('number', 91234)]
我相信我已成功将STRING编号转换为INTEGER,并且从其外观来看,实际对象可以复制所需的对象。
在我看来唯一不正确的令牌是91234)],)
我已经仔细检查了我的代码,无法确定为什么在AssertionError中显示该逗号。
任何帮助都会被感激。