我试图用Python做一个简单的单元测试,但是我不知道测试为什么失败。 我已经制作了三个文件:
def get_formatted_name(first, last):
full_name = first + ' ' + last
return full_name.title()
from name_function import get_formatted_name
print("\n Enter 'q' at any time to quit.")
while True:
first = input("\n Please give me a first name : ")
if first == 'q':
break
last = input("\n Please give me a second name : ")
if last == 'q':
break
formatted_name = get_formatted_name(first, last)
print("\n\t Neatly formatted name : " + formatted_name + '.')
import unittest
from name_function import get_formatted_name
class NamesTestCase(unittest.TestCase):
def test_first_last_name(self):
formatted_name = get_formatted_name('Clint', 'Eastwood')
self.assertEqual(formatted_name, 'Clint Eastwood')
unittest.main()
答案 0 :(得分:1)
您的代码对我来说看起来不错。我在机器上运行它,效果很好。我唯一注意到的是python -m unittest
找不到您的测试。一种快速的解决方法是在单元测试文件的末尾添加以下内容。
if __name__ == '__main__':
unittest.main()
然后,可以使用以下命令运行它。 python test_name_function.py
答案 1 :(得分:0)
由于您是专门询问PyCharm的,因此您需要做的所有事情:
unittest.main()
此:
if __name__ == '__main__':
unittest.main()
Run Unittests in test_name_function
两种方法都可以(即不调用main或在主体名称检查之后进行调用。
答案 2 :(得分:0)
这是因为假定您正在交互式解释器上运行,并且在发生异常时它会因SystemExit而失败。但是,就像@Zykerd在
的评论中提到的那样if __name__ == '__main__':
unittest.main()
通过假设脚本是从命令行而不是交互式解释器运行的,上述方法可以解决此问题。
干杯!
请在此处查看更多说明:Tests succeed, still get traceback