其他分享
首页 > 其他分享> > unittest测试增强库unittest_seven_helper

unittest测试增强库unittest_seven_helper

作者:互联网

简介

unittest只是提供了基础的架构,功能较少,测试方法命名也不够灵活,特别是不支持参数化和数据驱动 难以满足现代的需求(控制执行顺序,参数化和数据驱动等),故此开发了该测试增强库。更友好、更灵活的编写、管理与运行测试,生成更加美观的独立单文件HTML报告。内置参数化测试数据存取方案,省去设计的烦恼,节省更多的时间,从而更快的投入到编写用例阶段。

安装

pip方式安装

pip install unittest_seven_helper

源码方式安装(注意以管理员方式执行)

python setup.py install

快速开始

  1. 导入抽象测试类(AbstractTestCase)和测试方法装饰器(Test)
  2. 编写继承自AbstractTestCase的测试子类,子类提供以下实用方法
    • collect_testcases()

      获取类下所有使用Test装饰的enable为True,并根据priority排序后的测试用例对象列表

    • build_self_suite()

      构建该类测试用例构成的测试套件

    • run_test()

      执行该类所有使用Test装饰的enable为True,并根据priority排序后的测试用例

  3. 使用Test标记测试方法。
  4. 直接调用测试类的run_test()执行测试

Test参数说明

参数类型描述
author字符串用例编写者
editors列表修改者列表
groups列表方法所属的组的列表 — 用于后续的设置组依赖功能
enabled布尔值是否启用执行该测试方法
priority整数测试方法的执行优先级,数值越小执行越靠前
alway_run布尔值如果设置为true,则此测试方法将始终运行,即使它依赖于失败的方法也是如此 — 该功能暂未实现
description字符串测试用例名称
data_providerobject测试方法的参数化数据提供者,默认值是None,AbsractDataProvider的子类或者一个可调用的对象,返回数据集列表(当测试方法只有一个参数化时,应返回一维列表,多个参数化时返回二维列表)
data_provider_args元祖数据提供者变长位置参数(args)
data_provider_kwargs字典数据提供者变长关键字参数(kwargs)
last_modifyied_by字符串最后修改者
last_modified_time字符串最后一次修改的时间
enable_default_data_provider布尔值是否使用内置数据提供者(SevenDataProvider),默认值是True,未设置data_provider,且该值为True 才会使用内置数据提供者(SevenDataProvider)
depends_on_groups列表此方法所依赖的组列表 — 该功能暂未实现
depends_on_methods列表此方法所依赖的方法列表 — 该功能暂未实现

参数化数据提供者(data provider)

测试方法装饰器Test会调用数据提供者(data provider), 传测试类名称和测试方法名称给data provider的前两个固定位置参数, data_provider_args参数传给data provider的变长位置参数,data_provider_kwargs参数传给data provider的变长关键字参数

内置参数化数据提供者 - SevenDataProvider

实现了参数化测试数据存取方案,使用excel(xlsx格式)存取和管理维护参数化测试数据,简洁直观,易于修改维护。数据在文件中以用例数据块的方式存储。

class CalculationTest(AbstractTestCase):
        @classmethod
        def setUpClass(cls):
            pass

        def setUp(self):
            pass

        @testcase(priority=4, enabled=True, author='思文伟', data_provider_kwargs={'data_file_dir_path':'E:\\alltest'}, description='整数减法测试02')
        def integer_subtraction_02(self, testdata):
            """使用内置的数据提供者 - 传入测试数据文件所在的目录路径"""
            
            number_1 = testdata.get("减数1")
            number_2 = testdata.get("减数2")
            expected = testdata.get("预期")
            
            result = int(number_1) - int(number_2)
            self.assertEqual(result, int(expected))
            
        @testcase(priority=5, enabled=True, author='思文伟', description='整数减法测试03')
        def integer_subtraction_03(self,testdata):
            """使用内置的数据提供者 - 不传入测试数据文件所在的目录路径, 
            则会检测GLOBAL_CONFIG.seven_data_provider_data_file_dir 是否设置
            ,没有设置则会使用该方法所属的测试类所在的模块目录路径作为测试数据文件的查找目录
            """
            
            number_1 = testdata.get("减数1")
            number_2 = testdata.get("减数2")
            expected = testdata.get("预期")
            
            result = int(number_1) - int(number_2)
            self.assertEqual(result, int(expected))

        def tearDown(self):
            pass

        @classmethod
        def tearDownClass(cls):
            pass

    if __name__ == '__main__':
        CalculationTest.run_test()

自定义参数化数据提供者

自定义参数化数据提供者,可以是AbsractDataProvider的子类或者一个可调用的对象,返回数据集列表(当测试方法只有一个参数化时,应返回一维列表,多个参数化时返回二维列表),必须接收两个固定位置参数,变长位置参数(args)和变长关键字参数(kwargs),固定位置参数,第一个是测试类名,第二个是测试方法名。

标签:seven,name,helper,get,self,number,provider,data,unittest
来源: https://blog.csdn.net/hotswwkyo/article/details/116204188