Python单元测试在某些语法错误时无法启动且未提及错误来源

4 投票
1 回答
1046 浏览
提问于 2025-04-17 10:17

我正在用Flask、PostgreSQL和SQLAlchemy开发一个网页应用,代码是在Eclipse里写的。为了测试基本功能,我使用了Python的unittest。

有一次,我在编辑代码时不小心在注释里输入了一个符号∫。因为它是在注释里,所以我没在意去删掉它(我知道编码的事,但还是犯了这个错误!)。我运行unittest时,显然没有任何测试能执行。不过,问题是我在本地服务器上运行之前,根本找不到错误的原因,直到我启动了本地服务器,才发现了错误。

我过去也遇到过类似的问题,有些不知名的小错误会让我连测试都无法开始,而且还不告诉我错误的来源。

所以我想问,有没有什么办法可以在使用Python的unittest模块时找到错误的来源,避免像上面提到的这种情况?

1 个回答

3

运行一个基本的单元测试示例,并添加了一个# ∫注释后,我遇到了以下错误:

  File "example.py", line 4  
SyntaxError: Non-ASCII character '\xe2' in file x.py on line 4, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

使用python -m unittest example命令时,我也得到了同样的异常(只是错误信息稍微长一些)。

所以看起来这不是单元测试本身的问题。你是在用Eclipse插件来运行测试吗?如果是的话,试试从命令行运行;如果这样可以正常工作,那可能就是这个插件的一个bug。

撰写回答