例如,我想测试一个具有语法的函数,在我的unittest类的方法中,我可以使用如下代码吗?
self.assertRaises(SyntaxError, my_function)
当我使用它时,它只显示语法错误的追溯,而不是显示已经通过了多少测试。
答案 0 :(得分:1)
为了运行测试,代码必须由Python解释器进行字节编译。在运行函数之前导入包含函数的模块时会发生这种情况。在编译期间,生成了SyntaxError。
在测试模块中,您可以将try语句包装在try / except:
中 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建议的方法之一,看起来更简单,更清洁。
答案 1 :(得分:1)
按照Warren Weckesser的解释,您可以测试import function是否会引发错误:
self.assertRaises(SyntaxError, __import__, "error_library")
对于Python 2.7及更高版本,可以/应该使用importlib.import_module()
:
self.assertRaises(SyntaxError, importlib.import_module, "error_library")