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


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

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

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

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

    接着做了如下实验:

    运行结果:

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

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

    所以,主函数做如下调整

    # 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()

    这下能够正确执行了

  • 相关阅读:
    COGS 2075. [ZLXOI2015][异次元圣战III]ZLX的陨落
    51nod 1099 任务执行顺序
    洛谷 P1215 [USACO1.4]母亲的牛奶 Mother's Milk
    洛谷 P3395 路障
    2017.10.25 模拟赛
    COGS 146. [USACO Jan08] 贝茜的晨练计划
    洛谷 P3905 道路重建
    COGS 678. 双重回文数
    洛谷 P1509 找啊找啊找GF
    51nod 1366 贫富差距
  • 原文地址:https://www.cnblogs.com/hanmk/p/8697305.html
Copyright © 2020-2023  润新知