zoukankan      html  css  js  c++  java
  • DDT思想

    一、先了解一下几种数据取值方式

    csv文件取值

    def test_file():
        with open('test_csv.csv') as f:
            lst_f = csv.reader(f)
            data = []
            for r in lst_f:
                data.extend(r)
                # print(data)
            return data
        print(test_file())
    # @pytest.mark.skip
    @pytest.mark.parametrize('name',test_file())
    def test01(name):
        print(name)
    

    json格式取值

    
    # json数据处理
    def test_json():
        with open('test_json.json') as tj:
            lst = []
            data = json.load(tj)
            print(data)
            lst.extend(data)
            return lst
    @pytest.mark.parametrize('name',test_json())
    def test02(name):
        print(name)
    

    Excel文件处理

    def test_xlrd():
        filename = 'test1.xlsx'
        w_data = xlrd.open_workbook(filename)
        sheet = w_data.sheet_by_index(0)
        rows = sheet.nrows
        cols = sheet.ncols
        lst = []
        for row in range(rows):
            for col in range(cols):
                c_data = sheet.cell_value(row, col)
                lst.append(c_data)
        return lst
    @pytest.mark.parametrize('name',test_xlrd())
    def test03(name):
        print(name)
    

    操作数据库

    conn = pymysql.connect(
        user='root',
        passwd='123456',
        host='localhost',
        port=3306,
        db='my_test'
    )
    def test_db():
        qs = 'select uid,uname,pwd from test_user'
        lst = []
        try:
            cursor = conn.cursor()
            cursor.execute(qs)
            # 获取所有的数据
            r = cursor.fetchall()
            for x in r:
                # x 表示列
                u = (x[0],x[1],x[2])
                lst.append(u)
            return lst
        finally:
            cursor.close()
            conn.close()
    
    @pytest.mark.parametrize('uid,uname,pwd',test_db())
    def test04(uid,uname,pwd):
        print(uid,uname,pwd)
    
    if __name__ == '__main__':
        # pytest.main(['-vs', 'test_file.py'])
        print(test04())
    

    二、认识ddt :Data Driver Test

    通过使用数据驱动测试的方法,可以在需要验证多组数据测试场景中,使用外部数据源实现对输入输出与期望值的参数化,避免在测试中使用硬编码的数据。 包括四个模块,@ddt、@data、@unpack 解包 @ file_data

    
    # 安装
    pip install ddt
    
    

    code示例

    from ddt import ddt,data,unpack,file_data
    import pytest
    import os
    import unittest
    def get_data():
        testdata = [{'name': 'tom', 'age': 20}, {'name': 'kite', 'age': 30}]
        return testdata
    
    
    @ddt
    class MyTestCase(unittest.TestCase):
        # 读取元组数据-单组元素
        @data(1, 2, 3)
        def test1(self, value):
            print(value)
    
        # 读取元组数据-多组元素
        @data((1, 2, 3), (4, 5, 6))
        def test2(self, value):
            print(value)
    
        # 读取元组数据-拆分数据
        @data((1, 2, 3), (4, 5, 6))
        @unpack  # 拆分数据
        def test3(self, value1, value2, value3):
            print(value1, value2, value3)
    
        # 列表
        @data([{'name': 'tom', 'age': 20}, {'name': 'kite', 'age': 30}])
        def test4(self, value):
            print(value)
    
        # 字典
        @data({'name': 'tom', 'age': '20'}, {'name': 'kite', 'age': '30'})
        def test5(self, value):
            print(value)
    
        # 字典-拆分
        @data({'name': 'tom', 'age': '20'}, {'name': 'kite', 'age': '30'})
        @unpack
        def test6(self, name, age):
            print(name, age)
    
        # 变量或者方法调用
    
        testdata = [{'name': 'tom', 'age': 20}, {'name': 'kite', 'age': 30}]
    
        # @data(*testdata)
        @data(get_data())
        def test7(self, value):
            print(value)
    
        # 读文件
        @file_data(os.getcwd() + '/test_json.json')
        def test8(self, value2):
            print(value2)
    
    
    if __name__ == '__main__':
        unittest.main()
    
    
  • 相关阅读:
    从零开始系统深入学习android(实践让我们开始写代码Android框架学习7.App Widgets)
    用才智征服天下,用信誉赢得未来
    微众时代看网络营销
    营销不是传奇,欠的只是方法
    名扬天下,从这里出发
    【缅怀妈妈系列诗歌】之二十六:贺诞母亲
    营销密码,带你走进神奇地带
    打造“80后”第一营销品牌
    如果有一天
    把你写进诗里
  • 原文地址:https://www.cnblogs.com/c-jw/p/14009747.html
Copyright © 2011-2022 走看看