python doctest:预期结果与“实际”结果相同,但测试失败
我现在正在学习如何使用Python来进行软件质量保证。
我写了一个简单的测试,目的是在一个文本文件的数字矩阵中找到字母'a'。
问题是,尽管我得到的结果和预期是一样的,但测试还是失败了。
这是为什么呢?你能告诉我我哪里做错了吗?
测试脚本:
fin = open("abc.txt", "r")
arr_fin = []
for line in fin:
arr_fin.append(line.split())
print arr_fin
for row in arr_fin:
arr_fin_1 = " ".join('{0:4}'.format(i or " ") for i in row)
print arr_fin_1
def find_letter(x, arr_fin_1):
"""
>>> find_letter('a', arr_fin_1)
97
"""
t=ord(x) #exchange to letter's ASCII value
for i in arr_fin_1:
if i==x:
print t
return;
def _test():
import doctest
doctest.testmod()
if __name__ == "__main__":
_test()
错误信息:
Expected:
97
Got:
97
**********************************************************************
1 items had failures:
1 of 1 in __main__.find_letter
***Test Failed*** 1 failures.
2 个回答
2
这个:
return;
会让你的函数返回 None
。
你是不是想写 return t
呢?
另外,我认为 doctest
测试应该是自给自足的。用户应该能在你的文档中看到这些内容,并且不需要额外的背景知识就能理解。在你的例子中,你使用了一个模块内部的 arr_fin_1
对象,这对用户来说是完全不透明的。最好在调用 find_letter
之前在 doctest
中定义它,这样可以提供一个完整的示例。
14
你在97后面多了一个空格——如果把它去掉,你的测试就能正常运行了。