通过运行主函数,返回的参数,报json解析错误
正常的返回参数,应该如图
造成这个原因的是:
python从excel中解析出来的数据类型不是字典,是字符串,所以无法传递给requests当做请求参数
需用用json.loads()转成字典格式,然后进行传参
对python从Excel中解析出来的数据类型进行测试一波
#!/usr/bin/env python3 # -*-coding:utf-8-*- # __author__: hunter import xlrd import json import requests data = xlrd.open_workbook(‘D:/hunter_/interfaceTest/interface/tool/demo2.xlsx‘) sheet = data.sheet_by_index(0) url = sheet.cell_value(1, 5) data1 = sheet.cell_value(1, 9) #data2 = json.loads(data1) print(‘从Excel中提取出来的params为:‘, data1) print(‘从Excel中提取出来的params的数据类型为:‘, type(data1)) #print(type(data2))
结果:可以看到结果是字符串类型
加入json.load进行转换:转成字典类型
主函数进行修改:
#!/usr/bin/env python3 # -*-coding:utf-8-*- # __author__: hunter from conn.run_demo import RunMain from interface.tool.handle_excel import * import json class RunTestCase: def __init__(self): self.Runmain = RunMain() # 实例化调用get/post请求基类 self.data = HandleExcel() # 实例化操作Excel文件类 def go_run(self): rows_count = self.data.get_rows() # 获取Excel行数 for i in range(1, rows_count): # 利用行数进行迭代处理每个接口 url = self.data.get_value(i, get_url()) # 循环获取URL的值 print(url) print(‘=====‘) method = self.data.get_value(i, get_mothod()) # 循环获取method的值 data = json.loads(self.data.get_value(i, get_params())) # 循环获取请求参数 print(data) print(‘=====‘) is_run = self.data.get_value(i, get_priority()) # 获取是否运行,即判断Excel中priority是不是为“high" if is_run == ‘high‘: res = self.Runmain.run_main(url, method, data) # 调用主函数 print(res) print(‘=====‘) if __name__ == ‘__main__‘: run = RunTestCase() run.go_run()
其中还有一个坑就是:
通过Excel进行传参,数据内容,格式只能用双引号,不然就会报错:
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes
原文地址:https://www.cnblogs.com/hemingwei/p/11579194.html
时间: 2024-11-10 16:14:08