zoukankan      html  css  js  c++  java
  • python接口自动化9-ddt数据驱动

    前言

    ddt:数据驱动,说的简单一点,就是多组测试数据,比如点点点的时候登录输入正常、异常的数据进行登录。

    实际项目中,自动化测试用得很少,但也有人用excel来维护测试数据

    一、ddt

    1、安装:pip install ddt (我这里已经安装过了)

    C:UsersAdministrator>pip install ddt
    Requirement already satisfied: ddt in d:path_pythonlibsite-packages (1.2.1)

    2、先看下我们以前正常登录禅道的传参。登录需要账号与密码,现在只有一组数据,那么ddt就可以做到多组数据执行。(这里让你自己来)

    # 登录
    s = requests.session()
    login_url = 'http://127.0.0.1/zentao/user-login.html'
    pr = {
        'account': 'admin',
        'password': '123456',
    }
    login_r = s.post(login_url, params=pr)  # 传 params 参数
    
    # 断言是否登录成功
    r1 = s.get('http://127.0.0.1/zentao/doc-browse-1-byModule-0-id_desc-doc.html')
    if '产品主库' in r1.content.decode('utf-8'):
        print('登录成功')
    else:print('登录失败')

     3、需导入ddt、unittest。

    ①首先得有多组的数据来源(我写的是自己定义的一组json数据,也可以读取文件,喜欢就好!!!)

    ②测试类,需要加上装饰器:@ddt.ddt

    ③测试函数,也需要加上装饰器且传所有数据过来,*分别传全部数据:@ddt.data(*test_data)

    ④注意:用到ddt的多组数据传的是 data ,而不是 test_data,更不是 *test_data

    import requests, ddt, unittest
    
    # ddt数据驱动所需准备的数据
    test_data = [
        {'account': 'admin', 'pwd': '123465', 'exp': 'admin'},
        {'account': 'gsxl', 'pwd': '123321', 'exp': 'gsxl'},
        {'account': 'xxxx', 'pwd': '654321', 'exp': 'xxxx'}, ]
    
    # 类需要ddt装饰器
    @ddt.ddt
    class Test_xl(unittest.TestCase):
    
        def setUp(self):
            self.s = requests.session()
            self.s.verify = False
    
        def tearDown(self):
            self.s.close()
    
        @ddt.data(*test_data)   # 某个用例需要用到ddt的测试数据
        def test_001(self, data):
            print('ddt测试数据是:%s' % data)
    
    if __name__ == '__main__':
        unittest.main()                 # 告诉解释器我是用unittest运行的!!!

    4、怎样对应取到想要的值呢?这好比返回的是dict、list,那一样是可以取到的,不然就先学学基础数据结构的新删查改了。如下简单提取:

    import requests, ddt, unittest
    
    # ddt数据驱动所需准备的数据
    test_data = [
        {'account': 'admin', 'pwd': '123465', 'exp': 'admin'},
        {'account': 'gsxl', 'pwd': '123321', 'exp': 'gsxl'},]
    
    # 类需要ddt装饰器
    @ddt.ddt
    class Test_xl(unittest.TestCase):
    
        def setUp(self):
            self.s = requests.session()
            self.s.verify = False
    
        def tearDown(self):
            self.s.close()
    
        @ddt.data(*test_data)   # 某个用例需要用到ddt的测试数据
        def test_001(self, data):
            # print('ddt测试数据是:%s' % data)
            user = data['account']
            pwd = data['pwd']
            exp = data['exp']
            print('这是账号:', user)
            print('这是密码:', pwd)
            print('这是期望结果:', exp)
    
    if __name__ == '__main__':
        unittest.main()                 # 告诉解释器我是用unittest运行的!!!

    如果想用excel维护测试用例、测试数据的同学那肯定要懂得使用 xlrd 这个模块了。

    进行适配的二次封装,达到你想设计的自动化模式。欢迎来QQ交流群:482713805

  • 相关阅读:
    P3225 [HNOI2012]矿场搭建 题解
    CodeForces
    poj-3723
    codeforces -1214 E
    POJ-1741 树上分治--点分治(算法太奇妙了)
    洛谷p1345---最小割的奇妙运用
    洛谷p2149----两个终点和两个起点,最短路最大交汇长度!!!
    BerOS File Suggestion(字符串匹配map)
    Garbage Disposal(模拟垃圾装垃圾口袋)
    第八周组队赛
  • 原文地址:https://www.cnblogs.com/gsxl/p/11964182.html
Copyright © 2011-2022 走看看