基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象

基于fastapi实现6个接口

fastapi入门教程

fastapi入门教程

环境配置

liunx篇(腾讯云)

先把代码文件丢进去,直接运行报错没有模块

基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象
pip install fastapi[all] 安装fastapi所有依赖

基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象
安装完成
基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象
再次执行
基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象
腾讯云设置防火墙,我之前用的8001
基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象
运行命令的端口号要改为host=’0.0.0.0′
基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象
测试,注意修改域名为服务器的域名,端口为之前设置的端口
基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象

; windows篇

pip install fastapi[all] 安装全部依赖就可以运行了,ip地址我写了方法自动获取,不过这个只能在局域网内访问

代码


'''
@time    : 2022/6/21
@Author  : LL
@File    : pytest_test_api.py
实现mock功能:
    token拦截
    获取token(需要token把写入yaml)
    2个业务流程
    接口参数依赖校验
下载相关依赖包
pip install fastapi[all]
'''

from fastapi import Depends, FastAPI, Header, HTTPException, status
from pydantic import BaseModel

def get_ip():
    '''获取本机ip地址'''
    import socket
    res = socket.gethostbyname(socket.gethostname())
    return res

def verify_token(token: str = Header(...)):
    if token != "em123dca666333":
        raise HTTPException(status_code=400, detail="Token 无效")

app = FastAPI(dependencies=[Depends(verify_token)])

@app.get("/get_token")
def get_token(token: str = Header(...)):
    '''获取token信息'''
    return {'token': token}

'''获取运单号'''
'''测试需要保存运单号'''
@app.get('/get_waybill_no')
def get_waybill_no():
    return {'waybill_no': 'lj520'}

class WaybillNo(BaseModel):
    waybill_no: str
    lu_dan_ren: str

'''录单'''
'''测试需要使用运单号'''
@app.post('/lu_dan', status_code=status.HTTP_201_CREATED)
def lu_dan(waybill: WaybillNo):
    if waybill.waybill_no != 'lj520':
        raise HTTPException(status_code=400, detail='运单号格式错误')
    return {'msg': '运单创建成功', 'waybill_info': waybill}

'''创建账单'''
'''测试需要保存账单号和创建人'''
class CreateBill(BaseModel):
    create_month: str
    create_name: str

@app.post('/create_bill')
def create_bill(bill: CreateBill):
    return {'bill_no': 'lj1314', 'bill_info': bill}

'''确认账单'''
'''测试需要使用账单号,需要保存确认人'''
class AffirmBill(BaseModel):
    affirm_name: str
    bill_no: str

@app.post('/affirm_bill')
def affirm_bill(bill: AffirmBill):
    if bill.bill_no != 'lj1314':
        raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail='账单不存在')
    return {'bill_no': bill.bill_no, 'bill_info': bill}

'''核销账单'''
'''测试需要使用账单号、创建人和确认人'''
class WriteOffBill(BaseModel):
    create_name: str
    affirm_name: str
    bill_no: str

@app.post('/write_off_bill')
def write_off_bill(bill: WriteOffBill):
    if bill.bill_no != 'lj1314':
        raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail='账单不存在')
    if bill.create_name != bill.affirm_name:
        raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail='创建人和确认人不一致')
    return {'bill_no': bill.bill_no, 'bill_info': bill}

if __name__ == '__main__':
    import uvicorn

    uvicorn.run(app='pytest_test_api:app', host=get_ip(), port=8001, reload=True, debug=True)

测试总结果

基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象

; 接口请求参数和返回参数都正确的情况

获取token

基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象

; 获取运单号

基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象

录单

基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象

; 创建账单

基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象

确认账单

基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象

; 核销账单

基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象

Original: https://blog.csdn.net/aaaaaaaaanjjj/article/details/125407739
Author: 亚索不会吹风
Title: 基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/772700/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 更深层次理解Python的 列表、元组、字典、集合(工作面试学习必需掌握的知识点)

    抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。 Original: https://blo…

    Python 2023年11月8日
    053
  • 机器学习实战-SVM模型实现人脸识别

    文章目录 SVM建模进行人脸识别案例 * 1、导包 2、加载数据集 3、直接使用SVM模型建模 4、数据可视化 5、网络搜索优化确定最佳性能 6、使用最佳性能SVM建模 7、优化后…

    Python 2023年10月10日
    057
  • 太空射击 第 03 课:图像精灵

    视频 观看视频 射击 第 3 课:图像精灵 这是我们教程系列”使用 Pygame 进行游戏开发”的第 3 部分。它适用于对游戏开发和提高Python编码技能…

    Python 2023年9月24日
    079
  • SpringBoot 事务

    本地事务(区别于分布式事务)也叫数据库事务,MySQL的InnoDB存储引擎就已经支持了事务,Spring中的事务是在底层数据库事务的基础上进一步封装,可以在不同的项目、不同的操作…

    Python 2023年6月3日
    071
  • 宝塔面板部署python项目

    关闭项目管理器,重新打开,检查服务器是否正常运行,如状态显示已暂停,检查日志。 如果日志中有No Module named xx的报错则在step5中添加相应的module。如果有…

    Python 2023年8月9日
    043
  • 漫画 | 这个北欧小国发明的编程技术,竟然占领全世界了!

    上世纪60年代 ,挪威计算中心。 一个新来员工刚上班,发现有两个人居然在一楼的黑板前打架 新员工立刻跑到电话接线员那里报告 什么样的编程语言,能让两人大动肝火? 当时Nygaard…

    Python 2023年10月27日
    047
  • FLask框架AJAX操作

    FLask框架-AJAX(异步JavaScript与XML) – 潘登同学的flask学习笔记 文章目录 * – FLask框架-AJAX(异步JavaScript与X…

    Python 2023年8月10日
    056
  • 猿创征文|一文带你了解前端开发者工具

    前端开发者工具目录 * – 一、前言 – 二、前端开发者工具——编译器(含插件) – + 1、VS Code + 2、VS Code 必备插件 …

    Python 2023年9月30日
    042
  • 数据分析-Numpy学习笔记01

    Numpy库介绍 numpy内置并行运输功能,当系统有多个核心时,做某种计算时,numpy会自动做并行计算。 numpy底层使用C语言编写,内部解除了GIL(全局解释器锁),其对数…

    Python 2023年8月28日
    066
  • pandas入门(二):pandas中DataFrame的用法

    DataFrame 是 pandas 中一个重要的数据结构,相当于表格数据模型,他能像 excel 那样方便的处理数据,能快速的生成统计数据和数据图形。在这里,看看 DataFra…

    Python 2023年8月18日
    096
  • 一种喷涂有可吸收电磁波的水性油漆的飞机外壳

    一种喷涂有可吸收电磁波的水性油漆的飞机外壳所属技术领域:本发明涉及一种喷涂有可吸收电磁波的水性树脂油漆的飞机外壳,这是一种喷涂有可吸收电磁波的水性树脂油漆飞机。背景技术:传统飞机外…

    Python 2023年9月25日
    043
  • dataframe筛选列名_空dataframe过滤行之后列名丢失了

    感谢@everfigt 还是不懂colums怎么丢的。。。 t2的情况好理解,就是按true/false过滤,也就是说把空dataframe当成内部条件是没什么意义的吧? 但是我尝…

    Python 2023年8月18日
    071
  • 解决 Ubuntu 19 安装openjdk 8后与openjfx不兼容

    小淘气放假了,孩子在上幼儿园的小朋友,报班也不能太变态嘛, 还是让他自己娱乐的时间多一点,但是现在在家的娱乐就是看电视,听说电视看多了越看越傻,就想方设法的给他找一点娱乐活动,把我…

    Python 2023年6月3日
    094
  • 【无标题】

    一、首先访问https://github.com/Deepfakes/faceswap获取源代码。接着打开pycharm运行代码。这里使用的是thensorflow。二、安装各种包…

    Python 2023年9月18日
    051
  • flask-migrate:数据库界的git操作

    最近在跟着b站一位老师做全栈项目,也算是为自己的毕设搭一个基本框架,这个框架呢主要是利用flask进行网页的开发,其中在前后端交互中老师用到了migrate这个管理工具,很新奇,作…

    Python 2023年8月10日
    059
  • 有了这45个小技巧,再也不怕女朋友代码写得烂了!!

    大家好,我是三友~~ 不知道大家有没有经历过维护一个已经离职的人的代码的痛苦,一个方法写老长,还有很多的if else ,根本无法阅读,更不知道代码背后的含义,最重要的是没有人可以…

    Python 2023年10月17日
    045
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球