pytest笔记(6)——DDT(终)

DDT-csv文件
    导入类库
        import csv
    打开csv文件
        #打开文件
        file = open('D:\\test.csv','r')
    读取csv文件
        #定义一个列表
        data = []
        # 读文件
        txt = csv.reader(file)
        #跳过首行
        txt.__next__()
        #取出内容
        for i in txt:
            print(type(i[1]),i[1])
            # 内容放入一个列表中,方便引用
            data.append(i[1])
        print(data)
        # 用列表返回所有数据
        data_list = list(txt)
    写入csv文件
        file02 = open("文件",'ab')
        writers = csv.writer(file02)
        writers.writerows('需要写入的内容最好是列表')
    关闭csv文件
        file1.close()
        file02.close()

DDT-Excel文件
    导入类库
        import pandas as pd
        第一次使用需要安装pandas库和xlrd库
    读取Excel
        file03 = pd.read_excel('文件路径')
    提取相应行
        cle = file03.loc[[1,2]].values  #读取跳过首行的第1行或第2行,从0开始计算行数

    提取相应列
        list1 = file03['列名'].values  #获取到的类型是<class 'numpy.ndarray'>,需要我们转换为list使用
        list = list1.tolist() #可以把<class 'numpy.ndarray'>转换为list类型
        # 但是在真正引用的时候return 返回的还是自定义的类型需要我们把return的结果进行一个转换为字典使用eval()方法


DDT-数据库读取
    导入类库
        import pymysql
    数据库链接
        conn = pymysql.connect(
            host="",  # 域名
            port=int(3306),  # 端口号,需要是整形
            user='',  # 用户名
            password='',  # 密码
            db='',  # 链接的库名称
            charset='utf8'  # 如果查询有中文需要指定数据库编码,此处的编码是utf8不是utf-8
        )
    数据库访问
        cursor = db.cursor()
    提取内容
        cursor.execute('SQL命令')
        # 获取查询结果。cur.fetchall()
        response = cur.fetchall()
        #更改数据库信息:
        cur.execute("SQL命令")
        # 提交更改数据,修改的数据必须提交才能生效
        conn.commit()
        # 回滚所有操作:
        conn.rollback()  # 回滚所有更改(注意用的是conn)
        # 4、使用完成之后需要关闭游标和链接
    关闭数据库链接
        cur.close()  # 关闭游标
        conn.close()  # 关闭链接
                # 封装数据库的增/改/删操作:
                def update_sql(sql):
                    conn = get_db_conn()  # 建立链接
                    cur = conn.cursor()  # 建立游标
                    try:
                        cur.execute(sql) #输入sql语句
                        conn.commit #提交内容
                    except Exception as e:
                        conn.rollback() #回滚
                    cur.close  # 关闭游标
                    conn.close  # 关闭链接
                    return response  # 返回结果

===========================================DDT数据驱动小结================================================
一、数据结构
    列表
        读取方法
            for循环从列表中获取数据:for i in a:
            下标获取a[1]
        追加:list.append('内容')
    字典
        读取方法:userinfo = {'name':'哈哈','pwd':'123456'}
            读取key:for key in userinfo.key():
            读取value:for vale in userinfo.values()
        追加:userinfo['moble'] = '15552533859'
    json串
        读取方法:
            先转换为字典:d =json.load(d)

二、文件
    文本txt
        打开:fi01 = open('文件路径及名称','r',encoding='utf-8')
        读取:data01 = fi01.read()
        写:
            fi011 = open('文件路径','a')
            fi011.write('内容')
        关闭:fi01.close()
    csv
        导入库:import csv
        打开: fi02 = open('文件','r')
        读取: data02 = csv.reader(fi02):
            fi021 = open('文件','a')
            fi021.write('内容')
        关闭:fi021.close()
    excel
        导入库:import pandas as pd  #需要导入pandas 和xlrd库
        读取:
            fi03 = pd.read_excel('文件') #读取出的格式是
            提取相应行
            cle = fi03.loc[[1,2]].values  #读取跳过首行的第1行或第2行,从0开始计算行数
            提取相应列
            list1 = fi03['列名'].values  #获取到的类型是<class 'numpy.ndarray'>,需要我们转换为list使用
            list = list1.tolist() #可以把<class 'numpy.ndarray'>转换为list类型
            # 但是在真正引用的时候return 返回的还是自定义的类型需要我们把return的结果进行一个转换为字典使用eval()方法

三、数据库
    导入类库
    import pymysql

    数据库链接
    conn = pymysql.connect(
        host="",  # 域名
        port=int(3306),  # 端口号,需要是整形
        user='',  # 用户名
        password='',  # 密码
        db='',  # 链接的库名称
        charset='utf8'  # 如果查询有中文需要指定数据库编码,此处的编码是utf8不是utf-8
    )
    数据库访问
    cursor = db.cursor()
    提取内容
    cursor.execute('SQL命令')
    # 获取查询结果。cur.fetchall()
    response = cur.fetchall()
    # 更改数据库信息:
    cur.execute("SQL命令")
    # 提交更改数据,修改的数据必须提交才能生效
    conn.commit()
    # 回滚所有操作:
    conn.rollback()  # 回滚所有更改(注意用的是conn)
    # 4、使用完成之后需要关闭游标和链接
    关闭数据库链接
    cur.close()  # 关闭游标
    conn.close()  # 关闭链接

四、pytest参数化


五、如何进行框架DDT设计
    设计风格1:
        前提:已经具备的脚本:
        前期准备:明确
            确定哪些脚本需要使用批量的数据
            哪些脚本使用外部数据文件
            哪些脚本需要使用数据库
            分析数据是否需要公用,私有数据放于脚本中,共有的则可以放在独立脚本中(数据种类比较少),也可以分类存在,放于comment数据层放置多个py文件(适用与多数据)
    风格2:
        前提:没有自动化脚本
        方案:
            先根据数据特点先设计数据层
            或者先写脚本然后遇到后再规划DDT划分

====================================================结束================================================
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pytest是一个Python的测试框架,用于编写和运行测试用例。而yaml则是一种常见的数据格式,用于存储和传输数据。 在pytest中,可以使用ddt(Data-Driven Testing)模块来进行数据驱动的测试。ddt模块允许我们将测试用例的输入数据和预期结果从代码中分离出来,以yaml格式存储在单独的文件中。这样一来,我们可以轻松地修改和扩展测试数据,而无需修改测试代码。 使用ddt进行数据驱动测试的步骤如下: 1. 安装ddt模块:在端中运行`pip install ddt`命令来安装ddt模块。 2. 在测试类中引入ddt装饰器:在测试类上方添加`@ddt`装饰器,以告诉pytest该类将使用ddt模块。 3. 使用@data装饰器和@unpack装饰器:在测试方法上方添加`@data`装饰器,并传入从yaml文件中读取的测试数据。如果测试数据是一个列表,可以使用`@unpack`装饰器将其拆分为多个参数,方便使用。 4. 在测试方法中使用测试数据:在测试方法内部,使用传入的测试数据进行测试操作。通过调用断言函数来比较实际结果和预期结果,以判断测试是否通过。 5. 在命令行中运行测试用例:在端中运行命令`pytest`来执行测试用例pytest将自动查找和执行包含ddt装饰器的测试方法,并使用测试数据进行多次测试。 通过这种方式,我们可以通过简单修改或添加yaml文件中的测试数据,从而轻松地扩展和维护测试用例。同时,ddt模块还提供了更多的装饰器和功能,如@file_data、@cases、@data_class等,可以满足各种不同的测试需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值