Expected failures装饰符 Expected failures装饰符比较适用于反例测试的场景,明知会出错的,或者异常的测试场景下,会使得我们的测试方法执行失败,同时如果使用此装饰符可以标定测
Expected failures装饰符
Expected failures装饰符比较适用于反例测试的场景,明知会出错的,或者异常的测试场景下,会使得我们的测试方法执行失败,同时如果使用此装饰符可以标定测试方法执行结果符合预期,标定为Pass.以实例来说明Expected failures的用法。代码如下。
import unittestclass TheTestCase(unittest.TestCase):
@unittest.expectedFailure
def test_method1(self):
self.assertEqual(1+5,3*3,"两个表达式结果不等")
if __name__ == '__main__':
unittest.main()
以上代码执行结果如下。
如果去掉expectedFailure装饰符,那么执行结果如下,发现在没有此装饰符的情况下,执行结果失败。
如何实现循环执行反例集合
对于Python代码来说,如果遇到错误或异常,会直接报错,然后退出当前程序的执行。如果是要循环执行一些反例时,就会出现有些例子是执行不到的。此时可以利用unittest的subTest()的上下文管理器功能去实现循环执行反例的目的。以如下实例演示用法。
class TestSubTest(unittest.TestCase):
def test_remainder(self):
"""
0 到 10之间所有整数除以2的余数是否为0
"""
for i in range(0, 11):
with self.subTest(i=i):
self.assertEqual(i % 2, 0)
if __name__ == '__main__':
unittest.main()
执行结果是,会发现在循环体的执行过程中,所有的反例都执行到位。
如果在上面案例中不使用subTest 上下文管理器,那么执行结果如下,发现碰到第一次错误之后,整个循环体的执行就结束了。这就是区别。
如果大家想掌握第一手的资讯更新,请关注公众号“测试DAO”。