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

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 执行效果

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QT生成可执行文件的步骤

QT生成可执行文件的步骤 第一步:debug为release,然后进行编译 第二步:添加QT生成必要的库 首先,建立一个新的文件夹,然后将Release中的可执行文件拷贝到新的文件夹中 然后,在新建文件夹中生成必要的库 …

设计模式---工厂模式

1.什么是设计模式 软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 …

Leetcode-每日一题【剑指 Offer 18. 删除链表的节点】

题目 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 注意:此题对比原题有改动 示例 1: 输入: head [4,5,1,9], val 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调…

Vue2:组件高级(下)

Vue2:组件高级(下) Date: May 25, 2023 Sum: 自定义指令、插槽、商品列表、动态组件 目标: 自定义指令 基础概念: 概念: 内置指令:vue 官方提供了 v-for、v-model、v-if 等常用的内置指令。…

Python练习 linux系统资源监控

yum install python3 yum -y install python3-pip yum -y install epel-release yum -y install gcc python-devel pip install --trusted-host pypi.tuna.tsinghua.edu.cn psutil 初版: import os import sys import time import platform import subprocess …

day10 快速排序 方法重载 和 方法递推

方法重载 斐波拉契数列问题 使用重载思想解决 public static int method(int n){if (n 2 ){return 1 ;}return (n-1)*2method(n-1);}public static int f(int n){if (n 1){return 1;}if (n 2){return 2;}return f(n-1)f(n-2);} 快速排序 思维很简单,类似二…

Oracle以逗号分隔的字符串拆分为多行数据实例详解

前言 近期在工作中遇到某表某字段是可扩展数据内容,信息以逗号分隔生成的,现需求要根据此字段数据在其它表查询相关的内容展现出来,第一想法是切割数据,以逗号作为切割符,以下为总结的实现方法,以供大家参…

python制作小程序制作流程,用python编写一个小程序

这篇文章主要介绍了python制作小程序代码宠物运输,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。 1 importtkinter2 importtkinter.messagebox3 importmath4 classJSQ:5 6 7 d…

第二季“数字强市建设体验团”活动感悟-张继群

目录 第二季“数字强市建设体验团”活动感悟-张继群 第二季“数字强市建设体验团”活动感悟-张继群 此次参观中山东安信木业、费县智慧城市运营中心、澳柯玛以及沂南双创科技园区给我留下深刻印象,我深深地感受到了现代科技与生活的紧密联系。我们临沂市智慧大数据…

在x86下运行的Ubuntu系统上部署QEMU用于模拟RISC-V硬件系统

1.配置工作环境 sudo apt install gcc bison flex libncurses-dev ninja-build \pkg-config build-essential zlib1g-dev pkg-config libglib2.0-dev \binutils-dev libboost-all-dev autoconf libtool libssl-dev \libpixman-1-dev python-capstone virtualenv software-prop…

selenium获取b站视频标题

一、下载selenium 1. 下载对应版本的浏览器驱动 2. 安装selenium 3.把浏览器驱动放到使用的python内核的script目录中 二、测试效果模拟登录b站 from selenium import webdriver from selenium.webdriver.common.by import By import timebrowser webdriver.Chrome() # 打…

设计模式之Bridge模式的C++实现

目录 1、Bridge模式的提出 2、Bridge模式的定义 3、Bridge模式总结 4、需求描述 5、多继承方式实现 6、使用Bridge设计模式实现 1、Bridge模式的提出 在软件功能模块设计中,如果类的实现功能划分不清晰,使得继承得到的子类往往是随着需求的变化&am…

Win10语言设置 - 显示语言和应用语言

前言 Win10的语言设置可以设置显示语言和应用语言。其中,显示语言用于显示系统文字;应用语言用于应用程序显示文字。下文介绍如何设置。 显示语言 打开系统设置,选择时间和语言,如下图: 修改Windows显示语言即可更…

搭建Django+pyhon+vue自动化测试平台

Django安装 使用管理员身份运行pycharm使用local 1 pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple 检查django是否安装成功 1 python -m django --version 创建项目 1 1 django-admin startproject test cd 切换至创建的项目中启动django项目…

linux文本三剑客---grep,sed,awk

目录 grep 什么是grep? grep实例演示 命令参数: 案例演示: sed 概念: 常用选项: 案例演示: awk 概念: awk常用命令选项: awk变量: 内置变量 自定义变量 a…

Java课题笔记~ JavaWeb概述/开发基础

JavaWeb概述/开发基础 1.XML基础 (1)XML概述 (2)XML语法 (3)DTD约束 (4)Schema约束(XML Schema 比 DTD 更强大) 2.Web基础知识 Web是一个分布式的超媒…

1、如何实现两台电脑之间数据相互读写

一、确保两台电脑在同一个局域网中,可以使用网线【动态配置】进行两台电脑互连。 二、静态配置: 将IP地址和网关设为192.168.0.1,目的是让这台电脑做另一台电脑的网关,子网掩码一点击会自动添加。第二台电脑同样打开设置,此处IP地…

MySQL之深入InnoDB存储引擎——Undo页

文章目录 一、UNDO日志格式1、INSERT操作对应的UNDO日志2、DELETE操作对应的undo日志3、UPDATE操作对应的undo日志1)不更新主键2)更新主键的操作 3、增删改操作对二级索引的影响 二、UNDO页三、UNDO页面链表四、undo日志具体写入过程五、回滚段1、回滚段…

初中信息技术考试编程题,初中信息技术python教案

大家好,小编来为大家解答以下问题,初中信息技术python编程题库 网盘,初中信息技术python编程教学,今天让我们一起来看看吧! ID:12450455 资源大小:934KB 资料简介: 2019-2020学年初中信息技术【轻松备课】P…

阔别三年,领先回归!别克LPGA锦标赛申城十月再启高球盛会

2023年8月4日——2023年金秋十月,阔别中国赛场已久的别克LPGA锦标赛将强势归来,于10月12日至15日在上海旗忠花园高尔夫俱乐部再次拉开帷幕。作为三年来首个回归、同时也是今年国内唯一开赛的国际顶级高尔夫职业赛事,别克LPGA锦标赛将吸引全世…