Python接口自动化之对测试用例进行读写实战

介绍一下项目:
外卖系统,商家端,进行登录和业务管理。

login.py

import requests
import hashlib
# 1.项目的服务器地址+端口号
from delivery.configs.config import HOST

# md5加密
def get_md5(password):
    # 1.示例化md5加密对象
    md5 = hashlib.md5()
    md5.update(password.encode('utf-8'))
    return md5.hexdigest()
# print(get_md5('xxxxxx'))
"""
登录接口的特性:
1- 作为普通的接口测试
2- 需要获取token给后续接口关联
"""
# 接口自动化项目实战
class Login:
    # 2.封装登录函数
    def login(self,inData,getToken=False):
        # 1. url
        url = f'{HOST}/account/sLogin'
        # 2. 请求体---- 字典格式编辑
        # 调用加密函数   字典修改值:字典名【键名】 = 新的值
        inData['password'] = get_md5(inData['password'])
        payload = inData # 可以不写
        resp = requests.post(url, data=payload)
        if getToken == True: #获取token值
            return resp.json()['data']['token'] #token值
        else:
            return resp.json() #接口的响应值
if __name__ == '__main__':
    res = Login().login({'username':'xxx','password':'xxxxx'},getToken=False)
    print(res)

config.py

HOST ='http://xxxxx'

excelControl.py

import xlrd
import json

def get_excel_data(sheetName, caseName):
    resList = []  # 存放excel读取结果
    # 1- 获取excel路径
    excelDir = '../data/delivery_excel-v1.0.xls'
    # 2- 需要把excel加载到内存 --open --formatting_info=True 保持原样
    workBook = xlrd.open_workbook(excelDir, formatting_info=True)
    # 3- 获取对应的sheet
    # print(workBook.sheet_names()) # 获取所有的sheet名称
    workSheet = workBook.sheet_by_name(sheetName)
    # 遍历第0列 --匹配
    index = 0  # 遍历变量
    for one in workSheet.col_values(0):
        if caseName in one:  # 判断
            reqBodyData = workSheet.cell(index, 9).value  # 请求体
            respData = workSheet.cell(index, 11).value  # 响应体
            # 接口需要传递的是字典格式。excel读取是str,需要转换 str--json.loads() --字典
            # resList.append((reqBodyData, respData))  # [(请求体1,响应体1),(请求体2,响应体2)]
            resList.append((json.loads(reqBodyData), json.loads((respData))))
            # 记录正确用例数据的下标 ---list
            # 存储数据 --list
        index += 1
    return resList


from xlutils.copy import copy
# 写excel 1.新建空文件写入  2.已有的excel写入
def set_excel_data():
    # 1-excel表路径
    excelDir = '../data/delivery_excel-v1.0.xls'
    # 2- 需要把excel加载到内存 --open --formatting_info=True 保持原样
    workBook = xlrd.open_workbook(excelDir, formatting_info=True)
    workBookNew =copy(workBook) #复制一个新的excel文件
    workSheetNew = workBookNew.get_sheet(0) # 取复制出来的信excel文件对象的第一个子表 不能用名字只能用下标
    return workBookNew,workSheetNew # 复制出来的excel对象,复制出来excel


def get_excel_rowNum(sheetName, caseName):
    numList = []  # 存放excel正确行号
    # 1- 获取excel路径
    excelDir = '../data/delivery_excel-v1.0.xls'
    # 2- 需要把excel加载到内存 --open --formatting_info=True 保持原样
    workBook = xlrd.open_workbook(excelDir, formatting_info=True)
    # 3- 获取对应的sheet
    # print(workBook.sheet_names()) # 获取所有的sheet名称
    workSheet = workBook.sheet_by_name(sheetName)
    # 遍历第0列 --匹配
    index = 0  # 遍历变量
    for one in workSheet.col_values(0):
        if caseName in one:  # 判断
            numList.append(index)
            # 记录正确用例数据的下标 ---list
            # 存储数据 --list
        index += 1
    return numList

if __name__ == '__main__':
    # sheet名称
    res = get_excel_data('登录模块', 'Login')
    # res = get_excel_data('我的商铺', 'listshopping')
    for one in res:
        print(one)
    print(res)

test_login.py

# 1- 读取excel数据
from delivery.tools.excelControl import get_excel_data, set_excel_data, get_excel_rowNum
from delivery.libs.login import Login

workBookNew, workSheetNew = set_excel_data()  # 复制出来的表文件对象,子表对象
resList = get_excel_data('登录模块', 'Login')
numList = get_excel_rowNum('登录模块', 'Login')
for one in resList:  # [(body1,resp1),(),()]
    print(one)

# 2- 把excel读取的数据关联到请求代码里
for one in range(0, len(resList)):
    res = Login().login(resList[one][0])  # 传入对应行的body
    print(res)
    if one in numList:  # 判断是否是有效数据
        # 3- 实际与预期相对比,结果写入测试结果到excel -做判断 --断言
        if res['msg'] == resList[one][1]['msg']:
            # 写入成功!
            workSheetNew.write(one + 1, 12, 'pass')  # workSheeetNew.write(行号,列号,值)
        else:
            # 写入没有成功!
            workSheetNew.write(one + 1, 12, 'fail')  # workSheeetNew.write(行号,列号,值)
workBookNew.save('./res.xls')

运行成功

PYTHON写MT5指标 mt5 python接口_测试用例

目录

PYTHON写MT5指标 mt5 python接口_PYTHON写MT5指标_02