Python 3.4 单元测试在类上预期失败仍然失败
unittest.expectedFailure
这个装饰器在 Python 3.3 和 3.4 之间的行为似乎发生了变化,但我找不到关于这个变化的任何文档说明。问题是,下面的代码在 Python 3.4.1 中会导致测试失败,但在 Python 2.7 或 3.3 中却不会(都是在 Debian 系统上运行的):
import unittest
@unittest.expectedFailure
class TestA(unittest.TestCase):
def test_me(self):
raise Exception('no')
unittest.main()
请注意,这只是一个简短的示例脚本,用来演示这个问题。在我实际的测试套件中,我不能简单地检查是否有异常,而是依赖 expectedFailure 来确保在某些情况下某些测试能够通过。
1 个回答
1
这是一个回归错误,具体内容可以查看#21112: Python 3.4 回归:unittest.expectedFailure 在 TestCase 子类中不再有效。这个问题出现在Python 3.4.0 到 3.4.3 版本之间,因为在3.4版本中,unittest模块进行了大幅度的重构。这个问题在3.4.4版本中得到了修复(修复版本为3.4.4rc1,提交记录为ed599b7)。