python:unittest测试套件和批量用例的执行

一、测试套件介绍

unittest中测试套件(TestSuite类)主要用于将测试用例分组,主要用于:

  • 在不改变用例名的情况下,通过测试套件来控制用例执行的顺序;
  • 通过测试套件来添加需执行的case,未被添加的case则不会被执行;

unittest中discover()方法主要用于批量加载用例:

  • 在存在多个测试文件时,通过测试套件来统一执行用例;

二、执行测试套件与批量执行测试用例

1. TestSuite类常用方法

  • unittest.TestSuite():创建一个测试集合,返回值为unittest.suite.TestSuite类(简称TestSuiteClass);
  • TestSuiteClass.addTest(test):向测试套件中一个一个地添加测试用例;
    test的写法为:testClassName("testCaseName"),testClassName表示待测试的类名,testCaseName表示testCaseName下的测试用例名称,测试用例名称为字符串,故需用引号包裹;
  • TestSuiteClass.addTests(tests):向测试套件中一次添加多个测试用例,tests一般为列表或元组;

2. discover批量加载用例

  • unittest.defaultTestLoader.discover(start_dir, pattern='test.py',top_level_dir=None):批量加载测试用例,返回值为unittest.suite.TestSuite类(简称TestSuiteClass);
    start_dir:测试用例所在目录或测试模块名
    pattern:测试用例文件名的匹配方式,默认为test
    .py表示匹配以test开头的任意py文件(*表示匹配任意字符);
    top_level_dir:测试模块的顶层目录;

3. 执行测试套件或测试模块

  • unittest.TextTestRunner([verbosity, ...]):返回值为TextTestRunner类,常用的参数为verbosity;
    verbosity:控制输出的错误报告的详细程序。默认为1,则不会输出每一个用例的执行结果,仅输出总的执行结果;若设为2,输出结果更为详细(会输出每个用例的执行结果);
  • TextTestRunnerClass.run(test):执行测试用例或测试套件

三、实例演示

  1. 通过addTest或addTests向测试套件中添加用例
import unittest
class SuiteSample1(unittest.TestCase):
    """测试套件中添加测试用例"""
    @classmethod
    def setUpClass(cls):
        print("Start")

    @classmethod
    def tearDownClass(cls):
        print("End")

    def test_01(self):
        print(1)

    def test_02(self):
        print(2)

    def test_03(self):
        print(3)

if __name__ == '__main__':
    # 构造测试套件
    suite = unittest.TestSuite()
    # # 向测试套件中添加测试用例:方法一
    # suite.addTest(SuiteSample1("test_03"))
    # suite.addTest(SuiteSample1("test_02"))
    # 向测试套件中添加测试用例:方法二
    tests = [SuiteSample1("test_03"), SuiteSample1("test_02")]
    suite.addTests(tests)
    # 执行测试用例
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(suite)
  1. 所有的测试用例均保存目录XXX下,用例名称均以test_开头,通过discover方法批量执行测试用例
import unittest

if __name__ == "__main__":
    # 测试用例保存的目录
    case_dirs = r"E:\PycharmProjects\pythonStudy\ModuleStudy\unittest_module\testCases"
    # 加载测试用例
    discover = unittest.defaultTestLoader.discover(case_dirs, "test_*.py")
    # 运行测试用例
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(discover)
  1. 所有的测试用例均保存目录XXX下,用例名称均以test_开头,通过discover方法获取测试套件,依次执行测试用例
iimport unittest

def create_suite(testcase_dir):
    """创建测试套件"""
    suite = unittest.TestSuite()
    discover = unittest.defaultTestLoader.discover(testcase_dir, "test_*.py")
    for test_suite in discover:
        for test_case in test_suite:
            suite.addTest(test_case)
    return suite

def run(suite):
    """运行测试套件"""
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(suite)

if __name__ == "__main__":
    case_dirs = r"E:\PycharmProjects\pythonStudy\ModuleStudy\unittest_module\testCases"
    # 创建测试套件
    suite = create_suite(case_dirs)
    # 运行测试用例
    run(suite)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,045评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,114评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,120评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,902评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,828评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,132评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,590评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,258评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,408评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,335评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,385评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,068评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,660评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,747评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,967评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,406评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,970评论 2 341

推荐阅读更多精彩内容