zoukankan      html  css  js  c++  java
  • 接口自动化测试 python+request+excel(踩‘坑’)

    通过运行主函数,返回的参数,报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

  • 相关阅读:
    Ural 1201 Which Day Is It? 题解
    Ural 1250 Sea Burial 题解
    2019 Multi-University Training Contest 2: 1010 Just Skip The Problem 自闭记
    Codeforces 718A Efim and Strange Grade 程序分析
    CentOS7 修改MySql默认端口
    Ubuntu 18.04 版本中安装mysql 8的方法
    NET_NET深入体验与实战 第一章 .NET你知道 1.1什么是 .NET
    第五课
    c# 第一节课 一些简单的应用
    MDI窗体和窗体之间的操作总结
  • 原文地址:https://www.cnblogs.com/hemingwei/p/11579194.html
Copyright © 2011-2022 走看看