使用Flask框架mock server实战(三)

news2024/9/23 21:30:52

1、demo1:登录接口

1.1 Flask代码

from flask import request, Flask, jsonify

# 创建1个实例
app = Flask(__name__)

# 解决接收中文报文乱码问题
app.config['JSON_AS_ASCII'] = False


# 登录接口
# 指定路由和请求方法。strict_slashes=False 对URL最后的/符合是否严格要求。False时,路径带不带/都可以。如果是True, 不能加/
@app.route('/api/login', methods=['POST'], strict_slashes=False)
def login():
    # debug信息,打印请求方法
    print(request.method)
    # 获取请求数据,将数据变成字典
    data = request.get_json()
    # 打印请求的数据
    print(data)
    print(type(data))

    # 定义用户名和密码变量,从data中取值
    username = data['username']
    pwd = data['password']

    """
        测试场景(可以根据实际测试情况进行补充):
        1、参数为空
        2、用户名密码正确
        3、用户密码错误
    """

    if username == "" or pwd == "":
        """
            Flask框架里,可以用jsonify返回json数据
            使用jsonify时,返回的http response的Content-Type是application/json
            这样做是符合HTTP协议规定的,这就是使用jsonify的原因之一
        """
        return jsonify({
            "code": "001",
            "msg": "username or password can not be null"
        })
    elif username == "zz" and pwd == "123456":
        return jsonify({
            "address": {
                "city": "beijing"
            },
            "httpstatus": 200,
            "info": {
                "age": 18,
                "name": "zz"
            },
            "msg": "success",
            "token": "2334nkdnknkadfnkndafkanfdkasnk"
        })
    else:
        return jsonify({
            "code": "001",
            "msg": "username or password is not correct"
        })


if __name__ == '__main__':
    # debug=True 开启调试模式
    # 非debug模式,如果运行的时候代码报错了,网页不会提示详细错误,只会报服务器内部错误
    app.run(debug=True)

1.2 客户端请求

test_case.py

import requests
import pytest

# 账号和密码正确
def test_01():
    data = {
        "username": "cc",
        "password": "123456"
    }

    url = "http://127.0.0.1:5000/api/login"
    resp = requests.post(url=url, json=data)
    print(resp)
    print(resp.text)

# 账号密码都为空
def test_02():
    data = {
        "username": "",
        "password": ""
    }

    url = "http://127.0.0.1:5000/api/login"
    resp = requests.post(url=url, json=data)
    print(resp)
    print(resp.text)

# 账号或密码不正确
def test_03():
    data = {
        "username": "c",
        "password": "123456"
    }

    url = "http://127.0.0.1:5000/api/login"
    resp = requests.post(url=url, json=data)
    print(resp)
    print(resp.text)
    
if __name__ == '__main__':
    pytest.main(['-s', 'test_case.py'])

1.3 执行效果

在这里插入图片描述在这里插入图片描述

2、demo2:查询用户信息

2.1 Flask代码

# 查询个人用户信息接口
@app.route('/api/getuserinfo', methods=['GET'], strict_slashes=False)
def api_getUserInfo():
    # 服务端希望token在headers中传过来,不是url
    token = request.headers.get('token')
    if token == "2334nkdnknkadfnkndafkanfdkasnk":
        return jsonify({
            'code': 200,
            'data': [
                {
                    "userid": 122222,
                    "username": "cc",
                    "nickname": "橙子",
                    "openid": "UWENSNNIFIIF3i43344",
                    "userbalance": 5678.02,
                    "userpoints": 43221
                }
            ]
        })
    else:
        return jsonify({
            "code": 1000,
            "msg": "user info is incorrect"
        })

2.2 客户端请求

修改test_01如下

def test_01():
    data = {
        "username": "cc",
        "password": "123456"
    }

    url = "http://127.0.0.1:5000/api/login"
    resp = requests.post(url=url, json=data)
    print(resp)
    print(resp.text)
    token = resp.json()['token']
    # 基于获取的token来实现个人信息的查找
    url = "http://127.0.0.1:5000/api/getuserinfo"
    headers = {
        "token": token
    }
    resp = requests.get(url=url, headers=headers)
    print(resp)
    print(resp.text)

2.3 执行效果

在这里插入图片描述在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/854927.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

natapp内网穿透使用教程

官网 https://natapp.cn/1.首先在本站注册账号 2.登录后,点击左边 购买隧道,免费就行 3.我的隧道 进行一些配置 5.根据您的本机下载对应的客户端,比如我的本机是win10,64位,则下载Windows 64位的客户端 6.下载之后,解压至任意目录,得到natapp.exe (linux下无需解压,直接 wg…

logback日志框架学习(1)介绍logback

首先说下对日志框架的感受,很多人slf4j-api slf4j-simple logback-core logbak-classic log4j logj42很多的日志框架,控制台各种输出的时候日志框架warn error,有时候还不能输出日志。究其原因,大家都觉得日志框架不太重要&#x…

硬件系统工程师宝典(36)-----盘点常用的总线和常见的逻辑电平

各位同学大家好,欢迎继续做客电子工程学习圈,今天我们继续来讲这本书,硬件系统工程师宝典。 上篇我们了解了SDRAM的存储技术以及SDRAM的发展历程,技术的进步推动着产品的升级,也加速了整个电子行业的发展。今天我们来…

[信号与系统系列] 正弦振幅调制之差拍信号

当将具有不同频率的两个正弦曲线相乘时,可以创建一个有趣的音频效果,称为差拍音符。这种现象听起来像颤音,最好通过选择一个频率非常小的信号与和另一个频率大约1KHz的信号,把二者混合从而听到。一些乐器能够自然产生差拍音符。使…

SAP MIGO 移动原因维护

在OMJJ中维护 在OMJJ中,选择你要维护的移动类型,在“对话结构”中选择“移动原因”,可以修改和添加了。

【JUC】复习指南

JUC复习指南: JUC有哪些知识点? 什么是Juc Lock接口 线程间通信 集合的线程安全问题 多线程锁 Callable接口 JUC三大辅助类 CountDownLatch CyclicBarrier Semaphore 读写锁 ReetrantReadWriteLOck 阻塞队列 ThreadPool线程池 Fork/join Com…

【Docker】Docker容器化技术基础(一篇可以让你学到docker使用的文章)

Docker容器化技术 Docker(软件跨环境迁移)Docker概念:安装Dockerdocker架构配置Docker镜像加速器 一、Docker命令服务daemon相关的命令镜像相关命令Docker容器相关命令 二、Docker容器的数据卷数据卷概念配置数据卷配置数据卷容器 三、Docker…

关于简单C++函数在内存中的存储问题

举例 int main(){... }int data(){... }int add(){... } 在分段式存储管理时,根据人们的需求,人为分段存储 如图:

MySql用户管理、权限管理

用户管理 1. 查看系统用户(查询mysql系统数据库中的user表) select * from mysql.user; 2. 创建用户 CREATE USER 用户名主机名 identified by 密码 -- 创建用户zhonghua,只能在当前主句localhost访问,密码为123456 create user zhonghualocalhost i…

代码反向生成时序图类图-Visual_Paradigm实践

目录 前言 一、Visual_Paradigm介绍 1、主界面介绍 2、功能简介 二、基于代码的序列图生成 1、新建VP项目工程 2、序列图反向生成 三、VP类图生成 1、生成主入口 四、数据ER模型生成 1、SQL脚本 2、ER反向生成 总结 前言 不知道作为研发的小伙伴们,在平时的…

Endnote插入生成参考文献的四种方式

Endnote插入生成参考文献的四种方式 为了熟练Endnote进行在word中插入参考文献,本文介绍四种插入生成参考文献的四种方式。 一、采用Endnote插入按钮方式生成 word选中插入参考文献位置—转入endnote—选中要插入的文献—点击Endnote插入按钮,过程如图…

Java数据类型,一文带你彻底拿捏~

——Java中运算符是一种特殊的符号,用来进行数据的运算、赋值和比较等 思维导图 一.算术运算符 1.什么是算术运算符 ——算术运算符是用于数据类型值之间,使用2个或以上的数据进行运算 2.算术运算符概括 算术运算符 解释示例,-正号&…

CMake:检测python模块和包

CMake:检测python模块和包 导言项目结构CMakeLists.txt相关源码 导言 上一篇,我们基本了解了如何去检测python的解释器和python库。通常,代码是依赖于特定的python模块,无论是python工具、嵌入python的程序,还是扩展python的库。…

Spring Boot 项目应用消息服务器RabbitMQ(简单介绍)

一、背景 本章讲述的是在用户下单环节,消息服务器RabbitMQ 的应用 1.1 消息服务器的应用 在写一个电商项目的小demo,在电商项目中,消息服务器的应用: 1、订单状态通知:当用户下单、支付成功、订单发货、订单完成等…

训练、验证和测试一句话搞懂

文章目录 训练集(training dataset)验证集(validation dataset)测试集(test dataset)训练集可划分为训练集和验证集二二六,一一八,一一一百 训练集(training dataset) 类比课堂知识,训练模型得…

Python中enumerate用法详解

目录 1.简介 2.语法 3.参数 4.返回值 5.详解 6.实例 7.补充 1.简介 enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。 2.语法 以下是 enumerate() 方法的语…

勘探开发人工智能应用:人工智能概述

0 提纲 机器学习、深度学习、计算机视觉等技术已在勘探开发、油气生产、炼油炼化、经营管理等重点环节进行应用与推广。请思考: 输入:数据是什么(数字、文本、图)?如何理解数据?如何清洗数据?(需要专业领域知识)输出&…

鉴权服务-天G报错引发的感想:一定要有如果报错的预案

今天是HW第一天,下午运维人员说鉴权服务上不去了,看了眼天宫,结果重启了,后来的情况就是20多分钟半小时一重启,真么神奇。开始排查原因: 1、前两天发版换的agent版本发布,但是不知道有没有这个…

【Winform学习笔记(六)】warning MSB3274:引用dll版本冲突

warning MSB3274:引用dll版本冲突 前言正文1、解决方法 前言 在本文中主要介绍 解决 类库编译 Warning MSB3274 的方法; 在项目中引用了自定义控件库,界面设计时可以正常放置删除控件,但启动时会报异常; 编译提示&…

Selenium 是什么?简单明了的介绍

Selenium Selenium 是什么 Selenium 是一款 Web UI 测试工具,是一款 自动化测试 工具,使用 Selenium 测试工具进行的测试通常被称为 Selenium Testing,各种支持如下列表: UI 元素的支持与管理:自写代码实现浏览器支…