让我们假设,无论出于什么原因,我都想编写一组测试用例,从失败代码的前提开始
可能是因为设置故障非常复杂,而演示固定状态非常简单。在我的例子中,甚至不是这样,我想以失败的测试开始,然后展示如何修复它,以便于文档记录
我可以在基类上修饰@unittest.expectedFailure
但是由于装饰是继承的,固定的子类意外地成功了
我能以某种方式消除预期的失败吗
在代码本身中,而不是在命令行参数中
虽然我使用并欣赏pytest
,但这是一个常规unittest
的问题
unittest.skipXXX
不是我想要的,我确实想要运行Test_ThisShouldFail
的测试
import sys
import unittest
@unittest.expectedFailure
class Test_ThisShouldFail(unittest.TestCase):
""" for argument's sake, let's say
the configuration and testing is very complicated
and I want it fail by default.
Subclasses fix the issue but re-use the test code
"""
data = dict(a=1, b=2)
def test_evens(self):
for key, v in self.data.items():
self.assertFalse(v % 2, f"{key}:Odd on {v}")
#@ 👉???unittest.expectedSuccess????
class Test_ThisShouldWork(Test_ThisShouldFail):
""" how do I turn off the expected failure? """
def setUp(self):
self.data.update(a=10)
if __name__ == "__main__":
sys.exit(unittest.main())
FAILED (expected failures=1, unexpected successes=1)
(venv) @explore$ py test_expectedfail.py -v
test_evens (__main__.Test_ThisShouldFail) ... expected failure
test_evens (__main__.Test_ThisShouldWork) ... unexpected success
----------------------------------------------------------------------
Ran 2 tests in 0.000s
FAILED (expected failures=1, unexpected successes=1)
我希望MRO可以查看TurnItOff的空白单元测试设置并使用它们。没有这样的运气
class TurnItOff(unittest.TestCase):
pass
class Test_ThisShouldWork(TurnItOff, Test_ThisShouldFail):
....
这依赖于
unittest.expectedFailure
的内部实现,但可以从以下方面入手:请注意
test_item
既可以是类也可以是函数,具体取决于放置装饰器的位置相关问题 更多 >
编程相关推荐