• python接口测试3-JSON格式


    什么是JSON?

    一种轻量级的数据交换格式。它独立于语言和平台,JSON解析器和JSON库支持不同的编程语言。JSON具有自我描述性,很容易理解。

    数据格式:

    {
    "name":"python",
    "age":5
    }

    接口最常见的数据格式就是JSON,现在我们来实践一下如何开发JSON格式的API接口

    from flask import Flask, request, jsonify
    
    app = Flask(__name__)
    
    @app.route("/api/sub/", methods=["POST"])
    def sub():
        if not request.json: # 如果请求数据类型非json
            return jsonify({"code": "100001", "msg": "请求类型错误", "data": None})
    
        if not "a" in request.json or not "b" in request.json: # 如果参数中没有a或者没有b
            return jsonify({"code": "100002", "msg": "参数缺失", "data": None})
        
        a = request.json.get("a")
        b = request.json.get("b")
        result = str(float(a) - float(b)) # 使用float支持浮点数相减
        return jsonify({"code": "100000", "msg": "成功", "data": result}) # 使用jsonify将字典数据转换为json类型的相应数据
    
    if __name__ == '__main__':
        app.run(port=5005)

    运行此接口

     使用测试工具测试接口

    这里需要注意的是此API需要传递的参数必须为JSON格式,否则会报类型错误,原因是JSON格式必须通过headers指定请求内容类型为json,Content-Type: application/json

    添加headers后访问成功。

    通过python代码测试上面的接口

    1. 必须通过headers指定内容类型为application/json: ```headers={"Content-Type":"application/json"}
    2. 请求数据要转化为字符串: data=json.dumps(data) (使用json.dumps需要import json)
    3. json格式的响应数据,在接口调试通过和稳定的情况下可以使用response.json()解析为字典格式,进行断言
    import requests
    import json
    
    base_url = "http://127.0.0.1:5005"
    
    def test_sub_normal():
        url = base_url + "/api/sub/"
        headers = {"Content-Type": "application/json"} # 1. 必须通过headers指定请求内容类型为json
        data = {"a": "4", "b": "2"}
        data = json.dumps(data) # 2. 序列化成字符串
        response = requests.post(url=url, headers=headers, data=data)
        # 3. 响应解析 # 响应格式为: {"code":"100000", "msg": "成功", "data": "2.0"}
        resp_code = response.json().get("code") 
        resp_msg = response.json().get("msg")
        resp_data = response.json().get("data")
        print(resp_code, resp_msg, resp_data)
        # 断言
        assert response.status_code == 200
        assert resp_code == "100000"
        assert resp_msg == "成功"
        assert resp_data == '2.0'
    
    if __name__ == "__main__":
        test_sub_normal()

    运行程序:

  • 相关阅读:
    2星|《自金融》:公开信息汇总,缺乏深度,缺乏自有观点
    3星|《好好工作》:适合职场新手看的工作原则
    QQ2010如何开启透明效果皮肤
    如何制作迅雷7的皮肤,如何获取迅雷7皮肤的图片
    如何使用易我数据恢复向导恢复数码相机删除的图片
    如何使用射手影音寻找字幕
    云端软件平台 如何在云端分享自己的文章
    如何使用千千静听为MP3添加专辑封面和文字信息
    如何使用Ultraiso制作U盘启动盘
    如何使用SubtitleWorkshop制作字幕
  • 原文地址:https://www.cnblogs.com/huny/p/13340630.html
Copyright © 2020-2023  润新知