需求分析
- 假设当前4条用例,需要执行test02和test04用例,那么可以通过测试套件的方式去实现这个需求
- 如果当前有100条用例,只需执行其中某些用例。怎么办呢?
#! /usr/bin/python3
# -*- coding:utf-8 -*-
# @公众号 : 码上开始
import unittest
class TestCase(unittest.TestCase):
def test01(self):
print("执行第1条用例")
def test02(self):
print("执行第2条用例")
def test03(self):
print("执行第3条用例")
def test04(self):
print("执行第4条用例")
解决思路
给用例打标签,只运行某些具有标签的用例
unittest没有标签功能
- 在测试方法后面加标签的名称
- 获取该类所有定义的方法名(即以test开头的用例)
- add动态添加用例
封装代码
#! /usr/bin/python3
# -*- coding:utf-8 -*-
# @FileName: day5.py
# @Time : 2020/8/9 20:57
# @公众号 : 码上开始
import unittest
class TestCase(unittest.TestCase):
def test01(self):
print("执行第1条用例")
def test02_smoke(self):
print("执行第2条用例")
def test03(self):
print("执行第3条用例")
def test04_smoke(self):
print("执行第4条用例")
if __name__ == "__main__":
# 测试套件
testcases = unittest.TestSuite()
list_case = [ ]
for case in dir(TestCase):
# endswith如果方法名以smoke结尾添加到用例
if case.endswith("smoke") and case.startswith("test"):
list_case.append(case)
# 只有符合条件的才会加到用列表里
# print(list_case)
# 列表的用例然后加到套件
for smoke in list_case:
testcases.addTest(TestCase(smoke))
# 最后执行用例
runner = unittest.TextTestRunner().run(testcases)
运行结果
执行第2条用例
执行第4条用例
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK