当前位置 : 主页 > 编程语言 > python >

Python单元测试-Unittest(六)

来源:互联网 收集:自由互联 发布时间:2022-06-18
​Expected failures装饰符​ Expected failures装饰符比较适用于反例测试的场景,明知会出错的,或者异常的测试场景下,会使得我们的测试方法执行失败,同时如果使用此装饰符可以标定测

​Expected failures装饰符​

Expected failures装饰符比较适用于反例测试的场景,明知会出错的,或者异常的测试场景下,会使得我们的测试方法执行失败,同时如果使用此装饰符可以标定测试方法执行结果符合预期,标定为Pass.以实例来说明Expected failures的用法。代码如下。

import unittest

class TheTestCase(unittest.TestCase):
@unittest.expectedFailure
def test_method1(self):
self.assertEqual(1+5,3*3,"两个表达式结果不等")

if __name__ == '__main__':
unittest.main()

以上代码执行结果如下。

Python单元测试-Unittest(六)_单元测试

如果去掉expectedFailure装饰符,那么执行结果如下,发现在没有此装饰符的情况下,执行结果失败。

如何实现循环执行反例集合

对于Python代码来说,如果遇到错误或异常,会直接报错,然后退出当前程序的执行。如果是要循环执行一些反例时,就会出现有些例子是执行不到的。此时可以利用unittest的subTest()的上下文管理器功能去实现循环执行反例的目的。以如下实例演示用法。

import unittest

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()

执行结果是,会发现在循环体的执行过程中,所有的反例都执行到位。

Python单元测试-Unittest(六)_python_02

如果在上面案例中不使用subTest 上下文管理器,那么执行结果如下,发现碰到第一次错误之后,整个循环体的执行就结束了。这就是区别。

Python单元测试-Unittest(六)_python_03

如果大家想掌握第一手的资讯更新,请关注公众号“测试DAO”。

上一篇:python S14-第二周
下一篇:没有了
网友评论