Python Unittest(六)中如何编写高效的单元测试用例?
- 内容介绍
- 文章标签
- 相关推荐
本文共计552个文字,预计阅读时间需要3分钟。
预期失败装饰符+预期失败装饰符适用于反例测试的场景,明确知道会出错的,或者异常的测试场景下,会使我们的测试方法执行失败。同时,如果使用此装饰符,可以标定测试‘失败’。
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”。
本文共计552个文字,预计阅读时间需要3分钟。
预期失败装饰符+预期失败装饰符适用于反例测试的场景,明确知道会出错的,或者异常的测试场景下,会使我们的测试方法执行失败。同时,如果使用此装饰符,可以标定测试‘失败’。
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”。

