尝试将String转换为Integer时,出现Nosetests的AssertionError

时间:2018-08-14 15:43:28

标签: python-2.7 int nose assertions

我正在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中显示该逗号。

任何帮助都会被感激。

0 个答案:

没有答案