将接口相关信息写入到Excel中,然后用此脚本从Excel中读取相应的信息并组装成URL来发送接口并获取返回的结果,并将结果写入到对应的用例中.
import requests import json import os, sys from openpyxl import load_workbook result_col_index = 6 def runtest(url, data, head): r = requests.post(url=url, data=json.dumps(data), headers=head) return r.json() def get_testcase(env, testcasefile): testcasefile = os.path.join(os.getcwd(), testcasefile) if not os.path.exists(testcasefile): print('测试用例文件不存在!') sys.exit() wb = load_workbook(testcasefile) ws = wb.get_sheet_by_name('testcase') rows = ws.max_row print(rows) if rows < 2: print('测试用例文件中没有用例数据,请确认后再执行!') sys.exit() for i in range(rows - 1): col = str(i + 2) casename = ws['B' + col].value url = ws['C' + col].value data = ws['D' + col].value head = ws['E' + col].value result = ws['' + col].value url = r'http://haenkg-' + env + '.huawei.com' + url print(type(url), url) try: data = eval(data) head = eval(head) except SyntaxError as e: print(e) print('json格式不正确,请确认后再提交!!') sys.exit() actjson = runtest(url, data, head) result = eval(result) print('this is actjson:', type(actjson), actjson) print('this is result:', type(result), result) if actjson['result'] == result['result']: print(casename + ':成功') ws['G' + col] = '成功' else: print(casename + ':失败!!!') ws['G' + col] = '失败' wb.save(testcasefile) if __name__ == "__main__": if len(sys.argv) == 1: print("请输入要执行的环境!!") sys.exit() envs = ['dev9', 'sit2', 'sit3', 'uat2', 'uat3'] if sys.argv[1] not in envs: print("请输入:['dev9','sit2','sit3','uat2','uat3']中的一个环境!!") sys.exit() get_testcase(sys.argv[1], 'testcases.xlsx')