python webdriver 测试框架数据驱动json文件驱动的方式

简介:

数据驱动excel驱动方式,就是数据配置在excel里面,主程序调用的时候每次用从excel里取出的数据作为参数,进行操作,

需要掌握的地方是对excel的操作,要灵活的找到目标数据

测试数据.xlsx:

路径-D:\test\0627

ExcelUtil.py:

#encoding=utf-8

from openpyxl import load_workbook



class ParseExcel(object):



    def __init__(self, excelPath, sheetName):

        # 将要读取的excel加载到内存

        self.wb = load_workbook(excelPath)

        # 通过工作表名称获取一个工作表对象

        self.sheet = self.wb.get_sheet_by_name(sheetName)

        # 获取工作表中存在数据的区域的最大行号

        self.maxRowNum = self.sheet.max_row



    def getDatasFromSheet(self):

        # 用于存放从工作表中读取出来的数据

        dataList = []

        # 因为工作表中的第一行是标题行,所以需要去掉

        for line in self.sheet.rows:  

            # 遍历工作表中数据区域的每一行,

            # 并将每行中各个单元格的数据取出存于列表tmpList中,

            # 然后再将存放一行数据的列表添加到最终数据列表dataList中

            tmpList = []

            tmpList.append(line[1].value)

            tmpList.append(line[2].value)

            dataList.append(tmpList)

        # 将获取工作表中的所有数据的迭代对象返回

        return dataList[1:]



if __name__ == '__main__':

    excelPath = u'E:\\数据驱动\\测试数据.xlsx'

    sheetName = u"搜索数据表"

    pe = ParseExcel(excelPath, sheetName)

    print pe.getDatasFromSheet()

    for i in pe.getDatasFromSheet():

        print i[0], i[1]

加print调试日志:

#encoding=utf-8

from openpyxl import load_workbook



class ParseExcel(object):

    def __init__(self,excelPath,sheetName):

        self.wb=load_workbook(excelPath)

        self.sheet=self.wb.get_sheet_by_name(sheetName)

        self.maxRowNum=self.sheet.max_row



    def getDatasFromSheet(self):

        dataList=[]

        for line in self.sheet.rows:

            tmpList=[]

            tmpList.append(line[1].value)

            print "line[1].value",line[1].value

            tmpList.append(line[2].value)

            print "line[2].value",line[2].value

            dataList.append(tmpList)

        print dataList[1:]

        return dataList[1:]



if __name__=='__main__':

    excelPath=u"d:\\test\\0627\\测试数据.xlsx"

    sheetName=u"搜索数据表"

    pe=ParseExcel(excelPath,sheetName)

    print pe.getDatasFromSheet()

    for i in pe.getDatasFromSheet():

        print i[0],i[1]

单独运行结果:

D:\test\0627>python  ExcelUtil.py

ExcelUtil.py:7: DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname]).

  self.sheet=self.wb.get_sheet_by_name(sheetName)

line[1].value 搜索词

line[2].value 期望结果

line[1].value 邓肯

line[2].value 蒂姆

line[1].value 乔丹

line[2].value 迈克尔

line[1].value 库里

line[2].value 斯蒂芬

[[u'\u9093\u80af', u'\u8482\u59c6'], [u'\u4e54\u4e39', u'\u8fc8\u514b\u5c14'], [u'\u5e93\u91cc', u'\u65af\u8482\u82ac']]

[[u'\u9093\u80af', u'\u8482\u59c6'], [u'\u4e54\u4e39', u'\u8fc8\u514b\u5c14'], [u'\u5e93\u91cc', u'\u65af\u8482\u82ac']]

line[1].value 搜索词

line[2].value 期望结果

line[1].value 邓肯

line[2].value 蒂姆

line[1].value 乔丹

line[2].value 迈克尔

line[1].value 库里

line[2].value 斯蒂芬

[[u'\u9093\u80af', u'\u8482\u59c6'], [u'\u4e54\u4e39', u'\u8fc8\u514b\u5c14'], [u'\u5e93\u91cc', u'\u65af\u8482\u82ac']]

邓肯 蒂姆

乔丹 迈克尔

库里 斯蒂芬

最后运行的脚本:

#encoding=utf-8

from openpyxl import load_workbook



class ParseExcel(object):

    def __init__(self,excelPath,sheetName):

        self.wb=load_workbook(excelPath)

        self.sheet=self.wb.get_sheet_by_name(sheetName)

        self.maxRowNum=self.sheet.max_row



    def getDatasFromSheet(self):

        dataList=[]

        for line in self.sheet.rows:

            tmpList=[]

            tmpList.append(line[1].value)

            print "line[1].value",line[1].value

            tmpList.append(line[2].value)

            print "line[2].value",line[2].value

            dataList.append(tmpList)

        print dataList[1:]

        return dataList[1:]



if __name__=='__main__':

    excelPath=u"d:\\test\\0627\\测试数据.xlsx"

    sheetName=u"搜索数据表"

    pe=ParseExcel(excelPath,sheetName)

    print pe.getDatasFromSheet()

    for i in pe.getDatasFromSheet():

        print i[0],i[1]

单独运行结果:

D:\test\0627>python  ExcelUtil.py

ExcelUtil.py:7: DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname]).

  self.sheet=self.wb.get_sheet_by_name(sheetName)

line[1].value 搜索词

line[2].value 期望结果

line[1].value 邓肯

line[2].value 蒂姆

line[1].value 乔丹

line[2].value 迈克尔

line[1].value 库里

line[2].value 斯蒂芬

[[u'\u9093\u80af', u'\u8482\u59c6'], [u'\u4e54\u4e39', u'\u8fc8\u514b\u5c14'], [u'\u5e93\u91cc', u'\u65af\u8482\u82ac']]

[[u'\u9093\u80af', u'\u8482\u59c6'], [u'\u4e54\u4e39', u'\u8fc8\u514b\u5c14'], [u'\u5e93\u91cc', u'\u65af\u8482\u82ac']]

line[1].value 搜索词

line[2].value 期望结果

line[1].value 邓肯

line[2].value 蒂姆

line[1].value 乔丹

line[2].value 迈克尔

line[1].value 库里

line[2].value 斯蒂芬

[[u'\u9093\u80af', u'\u8482\u59c6'], [u'\u4e54\u4e39', u'\u8fc8\u514b\u5c14'], [u'\u5e93\u91cc', u'\u65af\u8482\u82ac']]

邓肯 蒂姆

乔丹 迈克尔

库里 斯蒂芬

结果:

d:\test\0627>python test.py

d:\test\0627\ExcelUtil.py:11: DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname]).

  self.sheet=self.wb.get_sheet_by_name(sheetName)

tuple(data): (u'\u9093\u80af', u'\u8482\u59c6')

testData: 邓肯

expectData: 蒂姆

搜索-邓肯,期望-蒂姆

.tuple(data): (u'\u4e54\u4e39', u'\u8fc8\u514b\u5c14')

testData: 乔丹

expectData: 迈克尔

搜索-乔丹,期望-迈克尔

.tuple(data): (u'\u5e93\u91cc', u'\u65af\u8482\u82ac')

testData: 库里

expectData: 斯蒂芬

搜索-库里,期望-斯蒂芬

.

----------------------------------------------------------------------

Ran 3 tests in 45.614s


OK


 


report.log:


Fri,2018-06-29 11:18:S test.py[line:70] INFO 搜索- "邓肯",期望-"蒂姆"-通过

Fri,2018-06-29 11:18:S test.py[line:70] INFO 搜索- "乔丹",期望-"迈克尔"-通过

Fri,2018-06-29 11:18:S test.py[line:70] INFO 搜索- "库里",期望-"斯蒂芬"-通过

如果日志logging部分书写格式有问题、或者路径不存在、或者字符等有问题,日志就会输出到屏幕上,如果没有问题,才会打印到日志文件report.log中

数据驱动excel驱动方式和其他方式(txt等)原理大同小异,都是把数据从文件中取出来,用ddt模块进行解包,传进主程序,难点就是对不同的文件类型进行读取可能需要专门的程序包来处理,说白了,都是对基础的运用进行整合,真正项目中用到的肯定比这个要复杂。。。

学习上

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:开心螺蛳粉】自提!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述

在这里插入图片描述

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。

你可能感兴趣的:(python,json,开发语言)