zoukankan      html  css  js  c++  java
  • unittest框架系列四(子测试subTest)

    子测试subTest

    欢迎加入测试交流群:夜行者自动化测试(816489363)进行交流学习QAQ

    –成都-阿木木


    如果测试方法内,还需要对某些差异非常小的参数进行测试,unittest支持使用subTest()上下文管理器在测试方法的内部区分他们,也就是说,我们可以在测试方法的内部进行调用的测试方法的测试,也就是测试方法嵌套,可以传递一个参数集(数据驱动)对于子测试方法进行测试,子测试方法会针对参数集(数据驱动)中的每一个参数值,进行测试结果的输出。

    class NumbersTest(unittest.TestCase):
    
        def test_even(self):
            """
            Test that numbers between 0 and 5 are all even.
            """
            for i in range(0, 6):
                with self.subTest(i=i):
                    self.assertEqual(i % 2, 0)
    
    结果为:
    ======================================================================
    FAIL: test_even (__main__.NumbersTest) (i=1)
    Test that numbers between 0 and 5 are all even.
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "D:/TestScriptDir/python_web/mysite/unittest_demo.py", line 25, in test_even
        self.assertEqual(i % 2, 0)
    AssertionError: 1 != 0
    
    ======================================================================
    FAIL: test_even (__main__.NumbersTest) (i=3)
    Test that numbers between 0 and 5 are all even.
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "D:/TestScriptDir/python_web/mysite/unittest_demo.py", line 25, in test_even
        self.assertEqual(i % 2, 0)
    AssertionError: 1 != 0
    
    ======================================================================
    FAIL: test_even (__main__.NumbersTest) (i=5)
    Test that numbers between 0 and 5 are all even.
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "D:/TestScriptDir/python_web/mysite/unittest_demo.py", line 25, in test_even
        self.assertEqual(i % 2, 0)
    AssertionError: 1 != 0
    
    ----------------------------------------------------------------------
    Ran 1 test in 0.001s
    
    FAILED (failures=3)
    

    如果不使用子测试,则在第一次失败后执行将停止,并且错误将不那么容易诊断,因为i 不会显示的值:

    FAIL: test_even (__main__.NumbersTest)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "subtests.py", line 32, in test_even
        self.assertEqual(i % 2, 0)
    AssertionError: 1 != 0
  • 相关阅读:
    【UML九种图系列】之用例图
    数据结构之后缀数组
    Web Service实例——天气预报
    庞果网 合法字符串
    web 版发送邮件-已删除
    C语言实现双向链表删除节点、插入节点、双向输出等操作
    [置顶] String StringBuffer StringBuilder的区别剖析
    N!末尾有多少个零
    细说业务逻辑 -- 丢失的业务逻辑层
    你真的了解分层架构吗?——写给被PetShop"毒害"的朋友们
  • 原文地址:https://www.cnblogs.com/chineseluo/p/13710504.html
Copyright © 2011-2022 走看看