在第六目把主函数写好了,先来运行一下主函数

记录python接口自动化测试--从excel中读取params参数传入requests请求不生效问题的解决过程(第七目)-LMLPHP

从截图中可以看到,请求参数打印出来了,和excel中填写的一致

记录python接口自动化测试--从excel中读取params参数传入requests请求不生效问题的解决过程(第七目)-LMLPHP

但是每个接口的返回值却都是400,提示参数没有传进去,开始不知道是什么原因(因为excel中params的值已经按照requests的要求写成了字典格式);

后来突然想到一个原因:python从excel中解析出来的数据类型不是字典!!,所以无法传递给requests当做请求参数

接着做了如下实验:

记录python接口自动化测试--从excel中读取params参数传入requests请求不生效问题的解决过程(第七目)-LMLPHP

运行结果:

记录python接口自动化测试--从excel中读取params参数传入requests请求不生效问题的解决过程(第七目)-LMLPHP

果然,数据类型是‘str’,不是‘dict’

知道原因就好办了,利用json库的loads方法将数据反序列化

记录python接口自动化测试--从excel中读取params参数传入requests请求不生效问题的解决过程(第七目)-LMLPHP

记录python接口自动化测试--从excel中读取params参数传入requests请求不生效问题的解决过程(第七目)-LMLPHP

所以,主函数做如下调整

# coding:utf-8

from base.run_method import RunMain
from util.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)
method = self.data.get_value(i, get_method()) # 循环获取method的值
data = json.loads(self.data.get_value(i, get_params())) # 循环获取请求参数,并将得到的数据反序列化
# data = self.data.get_value(i, get_params()) # 循环获取请求参数
print(data)
is_run = self.data.get_value(i, get_priority()) # 获取是否运行,即判断excel中priority是不是"H"
if is_run == 'H':
res = self.Runmain.run_main(url, method, data) # 调用get/post主函数
print(res) if __name__ == '__main__':
run = RunTestCase()
run.go_run()

这下能够正确执行了

记录python接口自动化测试--从excel中读取params参数传入requests请求不生效问题的解决过程(第七目)-LMLPHP

05-11 02:42