unittest subTests上下文管理器的使用

unittest3.4版本后新增的subTests上下文管理器,用于处理类似数据驱动的循环操作,如:

import unittest

data = [1,2,3,4,5]

class TestsDemo(unittest.TestCase):
    def test_a(self):
        for item in data:
            with self.subTest(item=item):
                self.assertGreater(item, 2)

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

作用主要用于显示每一个数据的结果,当一个数据失败时,不会中断运行。 类似于ddt的功能,但实际仍只有一个用例(testMethod)。 运行结果:

======================================================================
FAIL: test_a (__main__.TestsDemo) (item=1)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/apple/Documents/Projects/Self/PyPi/runnerz/httprunner/demo.py", line 42, in test_a
    self.assertGreater(item, 2)
AssertionError: 1 not greater than 2
======================================================================
FAIL: test_a (__main__.TestsDemo) (item=2)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/apple/Documents/Projects/Self/PyPi/runnerz/httprunner/demo.py", line 42, in test_a
    self.assertGreater(item, 2)
AssertionError: 2 not greater than 2
----------------------------------------------------------------------
Ran 1 test in 0.002s
FAILED (failures=2)

结果有点让人凌乱,运行1条用例,失败2条。可以通过自定义unittest.TestResult类来自己定义是否把subTest当做用例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

临渊-测试开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值