zoukankan      html  css  js  c++  java
  • 记录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()

    这下能够正确执行了

  • 相关阅读:
    10. Regular Expression Matching
    9. Palindrome Number (考虑负数的情况)
    8. String to Integer (整数的溢出)
    7. Reverse Integer (整数的溢出)
    LeetCode Minimum Size Subarray Sum
    LeetCode Course Schedule II
    Linux 文件缓存 (一)
    LeetCode Tries Prefix Tree
    Linux : lsof 命令
    LeetCode Binary Tree Right Side View
  • 原文地址:https://www.cnblogs.com/hanmk/p/8697305.html
Copyright © 2011-2022 走看看