• 根据行数获取excel中的用例的数据


    新建一个lib包,在下面新建一个apilib自包,在新建一个login.py文件

    import hashlib
    import requests
    import json
    from configs.config import HOST
    def get_md5(psw):
        md5= hashlib.md5()   #实例化对象
        md5.update(psw.encode('utf-8'))   #进行加密操作
        return md5.hexdigest()       #拿到加密字符串,返回的是十六进制
    #实现token登录
    class Login:
        def login(self,inData,getToken=True):  #实例方法---可以直接接收json字符串
            url=f"{HOST}/account/sLogin"    #路径
            inData=json.loads(inData)   #json转化为字典
            inData["password"]=get_md5(inData["password"])
            payload = inData
            resp=requests.post(url,params=payload)
            if getToken:  #获取token模式
                return resp.json()['data']['token']
            else:  #获取响应数据--返回值--字典格式
                return resp.json()
    if __name__ == '__main__':
        # 这里必须符合json格式,所以必须键和值双引号
        print(Login().login('''{"username":"sq0129","password":"18792733468wj"}'''))
        #print(Login.login('''{"username":"sq0129","password":"18792733468wj"}''',getToken=False))
        #注意事项:inData='''{"username":"sq0001","password":"123456"}'''  必须是json格式,不然不能使用
        #json.loads(inData)会报错

    新建一个data包,下面建一个后缀名为 外卖系统接口测试用例.xls的用例表

    然后新建一个 tools包,下面新建一个get_ExcelData.py文件

    #-*- coding: utf-8 -*-
    #@File     : getExcelData.py
    #@Time     : 2020/10/1 10:01
    #@Author   : xianyu
    #@Email    : 1442987166@qq.com
    #@Software : PyCharm
    import xlrd
    import json
    from xlutils.copy import copy
    #打开表(读取表),根据行数获取数据
    def get_excelData(sheetName,startRow,endRow):
        resList=[]
        #路径
        excelDir='../data/外卖系统接口测试用例.xls'
        #formatting_info=True保持样式
        workBook = xlrd.open_workbook(excelDir,formatting_info=True)
        # worksheet = workBook.sheet_names()  #获取所有的sheet页名称
        #使用sheet名称获取指定的sheet页
        workSheet = workBook.sheet_by_name(sheetName) #不要用编号获取,为了以后便于维护,建议用sheet页名字
        for one in range(startRow-1,endRow):
            #读取单元格
            reqBodyData=workSheet.cell(one,9).value #请求body
            reqpData = workSheet.cell(one,11).value #相应数据
            resList.append((reqBodyData,reqpData)) #封装一个列表
        return resList
    
    #写入表
    def set_excelData():
        resList=[]
        #路径
        excelDir='../data/外卖系统接口测试用例.xls'
        #cell_overwrite_ok参数为True,则同一个单元格可以覆盖,默认为False
        workBook = xlrd.open_workbook(excelDir,formatting_info=True)
        workBookNew = copy(workBook)              #复制一个新excel文件对象 注意这个是wb copy用来专门copy、excel的
        workSheetNew = workBookNew.get_sheet(0)   #取复制出来的新excel文件对象的第一个子表#copy出来的不能用name
        return workBookNew,workSheetNew           #复制出来的excel对象,复制出来excel对象的第一个子表
    
    if __name__ == '__main__':
        get_excelData2('登录模块','Login')
        for one in get_excelData2('登录模块','Login'):
            print(one)
    
    #注意
    #excel用例里面的false要符合json格式,并不是python格式
    #用例里面全部写字典,因为不管表单还是json都可以用

    再新建一个testCase包,下面新建一个test_login.py文件

    #-*- coding: utf-8 -*-
    #@File     : testlogin.py
    #@Time     : 2020/10/1 9:33
    #@Author   : xianyu
    #@Email    :1442987166@qq.com
    #@Software :PyCharm
    #读取请求
    import json
    from tools.getExcelData import get_excelData,set_excelData
    workBookNew,workSheetNew = set_excelData()  #元组
    datalist =get_excelData('登录模块',2,7) #读取响应[(body,响应数据),(),()]
    #关联请求
    from lib.apilib.login_j import Login
    for one in range(0,len(datalist)):
        res = Login().login(datalist[one][0],False)
        #print(res)           #实际响应结果
        #print(json.loads(one[1]))
        #print(one[1])
        #实际结果与预期结果进行比较
        if res['msg'] == json.loads(datalist[one][1])['msg']:
            print("-------测试用例通过--------")
            workSheetNew.write(one+1,12,'pass')#(行号、列号、字符串内容)
        else:
            print("--------测试用例失败---------")
    
            workSheetNew.write(one+1, 12,'fail')
    #写结果
    workBookNew.save("../data/res.xls")

    执行test_login.py文件,就可以实现通过获取excel行数的用例数据,测试登录接口,并且写入实际结果

  • 相关阅读:
    121devg笔记 003
    java并发和排序的简单例子(Runnable+TreeSet)
    java的ConCurrentHashMap
    tortoisegit 配置ssh登录
    springboot支持http2
    MySQL数据库远程按日期备份windows脚本
    java web项目 jetty容器启动时,访问.jsp页面失败的问题。
    Oracle解决ora01653 无法通过1024扩展 解决Oracle表空间扩展问题
    vue3 [Vue warn]: onMounted is called when there is no active component instance to be associated with
    vue echarts There is a chart instance already initialized on the dom
  • 原文地址:https://www.cnblogs.com/king2/p/13766356.html
Copyright © 2020-2023  润新知