demo
REPORTS_NAMES = ["overall", "daily", "channel", "campaign", "item", "not-exist"]
# 使用 subtest
for report_name in REPORTS_NAMES:
with self.subTest(current_table=report_name):
self.query_report(report_name, param)
# 不使用subtest
for report_name in REPORTS_NAMES:
self.query_report(report_name, param)
使用subTest
在for循环中,每一次循环的都是独立的,当其中一个出现错误时,不影响整个测试用例的执行
with-subTest.png
不使用subTest
当任意一次循环失败时,整个用例都失败
not-subTest.png
subTest入参
subTest(msg=None, **params)
例如:
import unittest
class NumbersTest(unittest.TestCase):
def test_even(self):
"""
Test that numbers between 0 and 5 are all even.
"""
for i in range(0, 5):
with self.subTest("wow", ahh="wiwuwiwu", k=i):
self.assertEqual(i % 2, 0)
if __name__ == '__main__':
unittest.main()
执行结果如下:
image.png
所以入参相当于是一个给用户定位当前报告对应的是哪一个subtest,只要符合入参需求,可以随意写