[英]Python3 UnitTests: How to print to stdout out
我正在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()語句。 當測試用例失敗並且我沒有要分析的打印語句時,這令人沮喪。 在調試時,我不想注釋掉單元測試,而是編寫一個對等函數,僅對它們的打印語句運行測試。 如何使打印報表打印出來?
單元測試並行運行,因此您不能依賴打印功能,因為它不是線程安全的。 請改用記錄器,甚至更好地將自定義消息傳遞給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))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.