gpt4 book ai didi

python - 使用 nosetests 时出现 AssertionError

转载 作者:太空宇宙 更新时间:2023-11-03 15:17:05 24 4
gpt4 key购买 nike

在 Learn Python the Hard Way 的练习 48 中,我被要求创建一个模块来测试这个模块,lexicon_tests.py:

from nose.tools import *
from ex48 import lexicon


def test_directions():
assert_equal(lexicon.scan("north"), [('direction', 'north')])
result = lexicon.scan("north south east")
assert_equal(result, [('direction', 'north'),
('direction', 'south'),
('direction', 'east')])

def test_verbs():
assert_equal(lexicon.scan("go"), [('verb', 'go')])
result = lexicon.scan("go kill eat")
assert_equal(result, [('verb', 'go'),
('verb', 'kill'),
('verb', 'eat')])


def test_stops():
assert_equal(lexicon.scan("the"), [('stop', 'the')])
result = lexicon.scan("the in of")
assert_equal(result, [('stop', 'the'),
('stop', 'in'),
('stop', 'of')])


def test_nouns():
assert_equal(lexicon.scan("bear"), [('noun', 'bear')])
result = lexicon.scan("bear princess")
assert_equal(result, [('noun', 'bear'),
('noun', 'princess')])

def test_numbers():
assert_equal(lexicon.scan("1234"), [('number', 1234)])
result = lexicon.scan("3 91234")
assert_equal(result, [('number', 3),
('number', 91234)])


def test_errors():
assert_equal(lexicon.scan("ASDFADFASDF"), [('error', 'ASDFADFASDF')])
result = lexicon.scan("bear IAS princess")
assert_equal(result, [('noun', 'bear'),
('error', 'IAS'),
('noun', 'princess')])

所以我创建了模块 lexicon.py,在这里进行测试:

def scan(words):
directions = ['north', 'south', 'east', 'west', 'down', 'up', 'left', 'right', 'back']
verbs = ['go', 'stop', 'kill', 'eat']
stop_words = ['the', 'in', 'of', 'from', 'at', 'it']
nouns = ['door', 'bear', 'princess', 'cabinet']


lex = words.split()
list1 = []

for i in lex:
if i in directions:
list1.append(('direction', i))
elif i in verbs:
list1.append(('verb', i))
elif i in stop_words:
list1.append(('stop-word', i))
elif i in nouns:
list1.append(('noun', i))
elif i.isdigit():
list1.append(('number', convert_number(i)))
else:
list1.append(('error', i))
print list1

def convert_number(s):
try:
return int(s)

except ValueError:
return None

然而,当我在 powershell 中运行 nosetests 时,我得到了这个 AssertionError:

Traceback (most recent call last):
File "G:\Python27\lib\site-packages\nose\case.py", line 197, in runTest
self.test(*self.arg)
File "G:\Users\Charles\dropbox\programming\lexicon_test\skeleton\tests\lexicon_tests.py", line 6, in test_directions
assert_equal(lexicon.scan("north"), [('direction', 'north')])
AssertionError: None != [('direction', 'north')]
-------------------- >> begin captured stdout << ---------------------
[('direction', 'north')]

这与每次测试运行时收到的错误消息相同,其中 6 条针对 lexicon_tests.py 中的六个函数。这个错误是什么意思?一段时间以来一直很恼火。提前致谢。

最佳答案

assert_equal 函数接受两个参数,如果参数彼此不相等则抛出错误。在这种情况下,lexicon.scan("north") 的结果是 None,因为这不等于 [('direction', ' north')],它会抛出一个错误。

换句话说,您的lexicon.scan 函数没有正常工作。它可能与缺少 return 语句有关。

关于python - 使用 nosetests 时出现 AssertionError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20235018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com