• 基于Python的接口自动化-JSON模块的操作


    引言
            在使用Python进行接口自动化测试脚本时,一般都是脚本只写接口测试逻辑实现,而执行脚本时需要的测试用例数据都是写入excel、数据库或者指定的配置文件中,脚本通过读取这些测试数据来进行不同测试用例的执行,这样就做到了测试脚本和测试数据的分离,易于后续写实脚本的维护,这部分后续接口自动化框架来介绍怎么实现脚本和数据的分离。

    在python脚本构建接口测试请求时,如发送put、post这样的请求时,一般都是以JSON格式的进行请求体数据发送请求,我们编写的接口测试数据一般都是参考接口文档说明进行的,也就是编写的接口测试数据的请求体一般都是JSON格式。

    由于python数据类型与标准的JSON数据格式不一样,因此在python脚本读取数据进行接口测试前,需要将JSON数据转换成python对象。

    针对json数据交换,python语言封装实现了相关的模块:json,以下介绍python json模块的主要操作和应用。

    一、JSON是啥?
    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。在现在的应用程序软件中前端和后端数据交互一般都是使用的JSON

    二、JSON的有效数据类型
    在 JSON 中,一般数据都是key-value对形式存在,数据使用花括号{}包含,value值必须是以下数据类型之一:

    字符串
    数字
    对象(JSON 对象)
    数组
    布尔
    Null
    JSON 的值不可以是以下数据类型之一:

    函数
    日期
    undefined
    有效JSON数据示例:

    1. 字符串:{ "name":"John" }
    2. 数字:{ "name":123 }
    3. 对象:{"employee":{ "name":"Bill Gates", "age":62, "city":"Seattle" }}
    4. 数组:{"employees":[ "Bill", "Steve", "David" ]}
    5. 布尔:{ "sale":true }
    6. null:{ "middlename":null

    如果json比较复杂,可以上json在线解析网站:JSON在线 | JSON解析格式化—SO JSON在线工具,核验json是否标准正确。
    三、Python JSON库的使用
    使用 JSON 函数需要导入 json 库:import json

    打开Pycharm工具导入json库后,模块下封装的方法如下:

    其主要封装json.dumps()、json.loads()、json.dump()、json.load()

    json.dumps():将 Python 对象编码成 JSON 字符串

    json.loads():将已编码的 JSON 字符串解码为 Python 对象

    json.dump():将Python内置类型序列化为json对象后写入文件

    json.load():将文件中读取到的json形式的字符串转化为python类型

    python数据类型和json类型转换关系表如下:

    python数据转成json类型:

    json类型转成python数据类型:

    json.dumps()使用示例:

    编辑如下代码:

    1. import json
    2. data1 = (1,2,3) # 元组
    3. data2 = {'张山':'25','王五':'30'} # 字典
    4. data3 = [1,2,3] # 列表
    5. print(json.dumps(data1))
    6. print(json.dumps(data2))
    7. print(json.dumps(data3))

    运行结果如下:

    1. [1, 2, 3]
    2. {"\u5f20\u5c71": "25", "\u738b\u4e94": "30"}
    3. [1, 2, 3]

    运行后发现python对象都转换成json类型了,其中元组和列表转换成json的数组,字典转换成带双引号的json格式,其中默认将字符串转换成ascii码,如果不想转换成ascii码,将上面代码改成如下即可:

    print(json.dumps(data2,ensure_ascii=False))

    json.loads()使用示例:

    编辑如下代码:

    1. import json
    2. data1 = '{"name":"zhangshan","age":25}'
    3. print(json.loads(data1))

      输出如下:

    {'name': 'zhangshan', 'age': 25}

    json.dump()使用示例:

    编辑如下代码:

    1. import json
    2. data = {
    3. 'name': 'wangwu',
    4. 'liebiao': [1, 2, 3, 4],
    5. 'yuanzu': (1, 2, 3)
    6. }
    7. with open('json_test.txt', 'w+') as f:
    8. json.dump(data,f)

     运行完成后会生成同路径下生成一个json_test.txt的文件,文件内容如下:

     json.load()使用示例:

    在上面生成的文件基础上,读取文件的内容,代码如下:

    1. import json
    2. data = {
    3. 'name': 'wangwu',
    4. 'liebiao': [1, 2, 3, 4],
    5. 'yuanzu': (1, 2, 3)
    6. }
    7. with open('json_test.txt', 'w+') as f:
    8. json.dump(data,f)
    9. with open('json_test.txt') as f:
    10. print(json.load(f))

      输出如下:

    {'yuanzu': [1, 2, 3], 'name': 'wangwu', 'liebiao': [1, 2, 3, 4]}

    如上就是python json库的相关方法的使用和应用,后续有json数据和python类型交互转换时就需要引入json库,实现数据转换。

    总结:

    感谢每一个认真阅读我文章的人!!!

    作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

    文档获取方式:

    加入我的软件测试交流群:632880530免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

    这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

    以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

  • 相关阅读:
    2000-2020年上市公司常用控制变量数据整理
    一次线上OOM问题的个人复盘
    C++语言实现网络爬虫详细代码
    Apple pencil和其他电容笔区别有哪些?好用又便宜的ipad电容笔推荐
    vivado乘法器IP核进行无符号与有符号数相乘问题的验证
    unity使用Dijkstra算法实现自动寻路
    IEEE Standard for SystemVerilog Chapter 22. Compiler directives
    Java基础—Document类型的变化
    UE4中无法保存项目问题
    1897. 重新分配字符使所有字符串都相等
  • 原文地址:https://blog.csdn.net/2301_79535733/article/details/133948414