python接口自动化之读写excel文件、读json文件操作

一、利用excel文档编写测试用例,通过python脚本江excel用例读取作为接口参数值,去请求接口,请求成功后会在服务生成.json文件。

import requests,xlrd
import json,random

#请求Go对话处理接口
def qndialog(data):
    url = "http://ip:port/qnDialog"
    headers = {
        'Content-Type':'application/json'
    }

    response = requests.post(url=url, headers=headers, data=json.dumps(data))
    result = response.json()
    return result

if __name__ =="__main__":
    filenum = []
    filename_1 = 'file/NLP.xlsx'
    bk = xlrd.open_workbook(filename_1)
    casename = ['Case01','Case02','Case03','Case04','Case05','Case06','Case07','Case08','Case09','Case10','Badcase01','Badcase02','Badcase03','Badcase04','Badcase05']
    #casename = ['Case01']
    for i in casename:
        sh = bk.sheet_by_name(i)
        print(sh.cell_value(1,7))
        num = sh.nrows
        #print(result)
        #传参
        data = {
            "enterpriseId": "2000000002",
            "callList": {
                "recordId": "55522111",
                "initialagentId": "18242307249",
                "curuserdn": "013726530769",
                "talkertype": "02418242307249",
                "begintime": "20200905111230",
                "endtime": "20200905111330",
                "agentID": "85731928",
                "callCentraTag": "ccod",
                "isEnd": False
            },
            "taskData": {
                "bps": 0,
                "eps": 0,
                "index": 15,
                "callType": "2",
                "text": "嗯嗯,什么事",
                "silence_duration": 600,
                "speech_rate": 100,
                "emotion_value": "neutral"
            }
        }
        recordid = str(random.randint(110000000, 999999999))
        filenum.append(recordid)
        #print(recordid)
        bps = 0
        eps = 500
        #result = 0
        for i in range(num):
            if sh.cell_value(i,7) == '客户':
                calltype = "1"
            else:
                calltype = "2"
            data["callList"]["agentID"] = '85731928'
            data["callList"]["recordId"] = recordid
            data["taskData"]["callType"] = calltype
            data["taskData"]["text"] = sh.cell_value(i,4)
            data["taskData"]["index"] = i
            data["taskData"]["bps"] = bps
            data["taskData"]["eps"] = eps
            data["callList"]["isEnd"] = bool(sh.cell_value(i,8))
            bps = eps + 500
            eps = bps + 500
            print(filenum)
            print(qndialog(data))

二、通过第一步生成.json文件,江文件放在指定本地指定目录下,解析.json文件,提取想要的结果数据,再结合excel用例文件,将用例+测试结果拼接起来写入新的excel文档中。

# coding=utf-8
import json,xlrd
from openpyxl import load_workbook


class OperationJson:
    def __init__(self, file_name=None):
        if file_name:
            self.file_name = file_name
        else:
            self.file_name = '8841566.json'
        self.data = self.get_data()

    def get_data(self):
        fp = open(self.file_name,encoding='UTF-8')
        data = json.load(fp)
        fp.close()
        return data["checkResults"]

    def get_value(self, id):
        return self.data[id]
def xlrd_read(casename):
    filename_1 = 'file/NLP.xlsx'
    bk = xlrd.open_workbook(filename_1)
    sh = bk.sheet_by_name(casename)
    return sh

if __name__ == '__main__':
    num = 0
    casename = ['Case01','Case02','Case03','Case04','Case05','Case06','Case07','Case08','Case09','Case10','Badcase01','Badcase02','Badcase03','Badcase04','Badcase05']
    filenum = ['972898005', '676691731', '130784914', '761151316', '668260302', '647986707', '270412005', '272212006', '141623284', '727904634', '623635355', '832728470', '922045347', '487408271', '877844092']
    wb = load_workbook("NLP_result.xlsx")
    for m in wb.sheetnames:
        ws = wb[m]
        print(m)
        filename = 'file/{}.json'.format(filenum[num])
        opers = OperationJson(filename)
        checkResults = opers.get_data()
        result = xlrd_read(casename[num])
        for n in range(result.nrows):
            content = result.cell_value(n,4)
            ruleId = result.cell_value(n,3)
            audit_param = result.cell_value(n, 2)
            audit_object = result.cell_value(n, 1)
            role = result.cell_value(n, 7)
            ws.cell(row=n+1, column=1).value = audit_object
            ws.cell(row=n+1, column=2).value = audit_param
            ws.cell(row=n+1, column=3).value = ruleId
            ws.cell(row=n+1, column=4).value = content
            ws.cell(row=n+1, column=5).value = role
            for i in range(len(checkResults)):
                if checkResults[i]['content'] == content:
                    rules = checkResults[i]['rules']
                    for j in range(len(rules)):
                        if rules[j]['ruleId'] == ruleId:
                            result_nlp = '成功:' + rules[j]['ruleId']
                            ws.cell(row=n+1, column=6).value = result_nlp
                            print("成功:%s" %rules[j]['ruleId'])
                        else:
                            pass
                else:
                    pass
        num += 1
    wb.save("NLP_result.xlsx")
    wb.close()

 总结:在日常工作涉及到接口测试,都可以编写测试脚本来提高测试效率,节省测试时间。

原文地址:https://www.cnblogs.com/mtfan01/p/13674385.html