例如,我想在我的unittest类的方法中测试一个具有语法的函数,我可以如下使用代码吗?如何在python的unittest中使用assertRaises()来捕获语法错误?
self.assertRaises(SyntaxError, my_function)
当我使用它时,它只出现语法错误的回溯,而不是显示有多少测试已通过。
例如,我想在我的unittest类的方法中测试一个具有语法的函数,我可以如下使用代码吗?如何在python的unittest中使用assertRaises()来捕获语法错误?
self.assertRaises(SyntaxError, my_function)
当我使用它时,它只出现语法错误的回溯,而不是显示有多少测试已通过。
为了测试运行,代码必须由Python解释器进行字节编译。在函数运行之前,当包含函数的模块被导入时会发生这种情况。在编译过程中,会生成SyntaxError。
在您的测试模块,你可以/包import语句在一个try情况除外:
raised = False
try:
import foo
except SyntaxError:
# A syntax error was generated during the import...
raised = True
self.assert_(raised, "'import foo' failed to raise a SyntaxError.")
或使用由@alecxe建议的方法,这一下更简单和更清洁的一个。
继沃伦Weckesser的解释,你可以测试一个import function抛出一个错误:
self.assertRaises(SyntaxError, __import__, "error_library")
对于Python 2.7及以上,importlib.import_module()
可以/应该使用:
self.assertRaises(SyntaxError, importlib.import_module, "error_library")
可以显示错误? – GLHF
Traceback(最近一次调用最后一次): 语法错误:123a:c:\ Users \ wy \ Desktop \ python \ error_library.py,line 58,pos 8 – jack
这就像我的模块中有语法错误,其中包含我导入的函数,python停止运行我运行的unittest模块。 – jack