• 三、数据驱动DDT


    多组数据的测试用例,可以用数据驱动设计模式,一组数据对应一个测试用例,用例自动加载生成

    采用数据驱动方式,把数据写在excel表格中,代码做封装,用数据驱动测试,两部分相互独立。python中用ddt模块来做数据驱动,代码简单好维护,调试也方便。

    一、安装

    1.安装ddt模块,打开cmd输入pip install ddt在线安装

    >>pip install ddt

    选择国内源安装pip install -i https://mirrors.aliyun.com/pypi/simple
     

    二、数据驱动原理

    1.测试数据为多个字典的list类型

    2.测试类上加上@ddt.ddt

    3.需要进行数据驱动的方法加上@ddt.data(*测试数据)

    4.测试用例方法用参数接收def test_login(self,test_info)

    5.运行后用例会自动加载成单独的用例

     

    登录示例1:

    import ddt
    import  unittest
    test_data1 = [{"username": "zhangsan", "pwd": "zhangsan"},
                  {"username": "lisi", "pwd": "lisi"},
                  {"username": "wangwu", "pwd": "wangwu"},
                  ]
    test_data2 = [{"username": "wukong", "pwd": "wukong"},
                  {"username": "wuneng", "pwd": "woneng"},
                  {"username": "wujing", "pwd": "wujing"},
                  ]
    @ddt.ddt
    class Test(unittest.TestCase):
    
            def setUp(self):
                print("Start!")
    
            def tearDown(self):
                print("end!")
    
            @ddt.data(*test_data1)
            def test_ddt1(self, data):
                print(data)
    
            @ddt.data(*test_data2)
            def test_ddt2(self, data):
                print(data)
    
    if __name__ == "__main__":
        unittest.main()
    
    '''
    结果:
    Start!
    {'username': 'zhangsan', 'pwd': 'zhangsan'}
    end!
    Start!
    {'username': 'lisi', 'pwd': 'lisi'}
    end!
    Start!
    {'username': 'wangwu', 'pwd': 'wangwu'}
    end!
    Start!
    {'username': 'wukong', 'pwd': 'wukong'}
    end!
    Start!
    {'username': 'wuneng', 'pwd': 'woneng'}
    end!
    Start!
    {'username': 'wujing', 'pwd': 'wujing'}
    end!
    ......
    ----------------------------------------------------------------------
    Ran 6 tests in 0.000s
    
    OK
    '''

     

    登录示例2:

     

    import unittest
    import ddt
    from lenom.aa import ExcelHandler
    
    def login(username=None, password=None):
        """登录"""
        if (not username) or (not password):
            # 用户名或者密码为空
            return {"msg": "empty"}
        if username == 'yuz' and password == '123456':
            # 正确的用户名和密码
            return {"msg": "success"}
        return {"msg": "error"}
    
    cases = ExcelHandler('cases.xlsx').read_data('login')
    
    @ddt.ddt
    class TestLogin(unittest.TestCase):
    
        @ddt.data(*cases)
        def test_login(self,case_info):
            data = eval(case_info['data'])
            username = data["username"]
            password = data["password"]
            expected_response = case_info["expected"]
            actual_response = login(username, password)
            self.assertTrue(expected_response == actual_response['msg'])
    
    if __name__ == '__main__':
        unittest.main()

     
     
  • 相关阅读:
    php记录代码执行时间
    java中针对同一变量的不同函数的互斥操作
    Linux下mysql新建账号及权限设置
    Linux下重启apache
    Mysql数据导入
    ubuntu安装phpcurl与phptidy扩展
    Linux服务器间文件传输
    Flash本地传递大数据,图片数据,localconnection 超出大小,超出限制 bitmapdata 拂晓风起
    [Java][JavaScript]字符串数组与字符串之间的互转(join/split)(转) 拂晓风起
    java poi读取excel公式,返回计算值(转) 拂晓风起
  • 原文地址:https://www.cnblogs.com/zhangjx2457/p/13671809.html
Copyright © 2020-2023  润新知