我正在Python3中运行一些单元测试,但是print()似乎不起作用。
下面是我的代码片段:
import unittest
def lexer(line):
... #Lots of code and print statements here
return tokens
class lexerBasicTestCases(unittest.TestCase):
def Test1(self):
test = "9+4"
output = ["9", "+", "4"]
self.assertEqual(lexer(test), output)
def Test2(self):
test = "9 + 4"
output = ["9", "+", "4"]
self.assertEqual(lexer(test), output)
def Test2(self):
test = "9 + 4"
output = ["9", "+", "4"]
self.assertEqual(lexer(test), output)
def lexerBasicTestSuite():
suite = unittest.TestSuite()
suite.addTest(lexerBasicTestCases('Test1'))
suite.addTest(lexerBasicTestCases('Test2'))
suite.addTest(lexerBasicTestCases('Test3'))
unittest.TextTestRunner(verbosity=2).run(suite)
#Main program
lexerBasicTestSuite()我运行我的代码使用:
python \interpreter.py当单元测试运行时,lexer()中的print()语句将被忽略。当测试用例失败时,这是令人沮丧的,而且我没有打印语句来分析。在调试时,我不希望注释掉单元测试,而是编写一个只为它们的print语句运行测试的对应函数。如何使打印语句打印出来?
发布于 2017-05-27 19:28:09
单元测试并行运行,因此不能依赖print函数,因为它不是线程安全的。相反,可以使用记录器,或者更好地将自定义消息传递给assert方法。
class lexerBasicTestCases(unittest.TestCase):
def Test1(self):
"""
Docstrings are printed in most test runners.
"""
test = "9+4"
expect = ["9", "+", "4"]
failure_msg = 'lexer({0}) should return {1} but returned {2}'
actual = lexer(test)
self.assertListEqual(expect, actual, failure_msg.format(test, expect, actual)) https://stackoverflow.com/questions/44075404
复制相似问题