FastAPI官方教程太棒了(下)

本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 响应状态码 在@app.post()方法中添加status_code参数: from fastapi import FastAPI app = FastAPI() @app.post("/items/", status_code=201) async def create_item(name: str): return {"name": name} status_code也可以是IntEnum,比如Python的http.HTTPStatus。 常见响应状态码: 100以上,信息;很少直接使用; 200以上,成功;200是OK,201是Created,204是No Content; 300以上,重定向;304是Not Modified; 400以上,客户端错误;404是Not Found; 500以上,服务器错误; FastAPI引入了status,可以方便的录入这些状态: from fastapi import FastAPI, status app = FastAPI() @app.post("/items/", status_code=status.HTTP_201_CREATED) async def create_item(name: str): return {"name": name} 表单数据 为了使用表单,首先需要安装python-multipart: pip install python-multipart 示例: from fastapi import FastAPI, Form app = FastAPI() @app.post("/login/") async def login(username: str = Form(), password: str = Form()): return {"username": username} 表单由HTML中的<form></form>发送,请求头的content-type一般是application/x-www-form-urlencoded,当为文件时multipart/form-data。 请求文件 示例: from fastapi import FastAPI, File, UploadFile app = FastAPI() @app.post("/files/") async def create_file(file: bytes = File()): return {"file_size": len(file)} @app.post("/uploadfile/") async def create_upload_file(file: UploadFile): return {"filename": file.filename} create_file()的类型为bytes,接收到的文件内容也是bytes,数据都存在于内存中,适用于小文件。create_upload_file()的类型为UploadFile,它会在内存设置一个最大存储,超出最大存储,就会把数据转存到磁盘,适用于大文件。 ...

HttpRunner3的HTTP请求是怎么发出去的

在HttpRunner3的示例代码中,发送HTTP请求的代码是这样写的:

pytest132个命令行参数用法

在Shell执行pytest -h可以看到pytest的命令行参数有这10大类,共132个

Python微型Web框架Flask快速入门

本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 Flask是什么 如果说Django是一个开箱即用的自带完善功能的Web框架,那么Flask就是一个只提供基础结构的微型框架。这一点从它的GitHub源码就能看出端倪: 它的核心代码就只有这么多。微型意味着Flask本身只提供了简单的核心的功能,但它具备了强大的可扩展性。比如,它不会强制你使用某个ORM框架,而是把选择权交给你,让你自己决定集成哪个扩展。 无论如何,都应该学习一下Flask,因为它让你从零开始,了解一个Web框架是如何诞生的: 安装Flask Flask需要Python3.6及以上才能使用,最新的async异步支持需要Python3.7及以上。 安装Flask前可以先创建一个虚拟环境,这样相关的包都放在这个虚拟环境中。 Mac用户: ## 创建 $ mkdir myproject $ cd myproject $ python3 -m venv venv ## 激活 $ . venv/bin/activate Windows用户: ## 创建 > mkdir myproject > cd myproject > py -3 -m venv venv ## 激活 > venv\Scripts\activate 然后就通过pip安装Flask即可: $ pip install Flask Hello World Flask是一个Web框架,更准备的说是一个提供接口的后端服务,只需要5行代码就能实现一个接口: from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "<p>Hello, World!</p>" 截止到目前,还没见过哪个Web框架是这么玩的,有点颠覆对Web框架的认知,印象中的Web框架都是有点庞大的,Flask却很轻巧的就实现了。 运行后会在控制台输出: > set FLASK_APP=hello > flask run * Running on http://127.0.0.1:5000/ 浏览器访问http://127.0.0.1:5000/就会看到Hello, World!字样。 ...

2026-01-02 · 1 分钟 · 102 字 · 测试开发刚哥 · Python生态 · #Flask

真香,理解记忆法学习Python基础语法

这篇文章很难写!我最开始学 Python,和大多数人一样,是看的菜鸟教程:

Django匆匆一眼却解答了多年疑惑

Django 是 Python 的 一款 Web 开发框架,另外还有 Tornado,Flask,Twisted。为什么我要选择学 Django?原因很简单,上家公司来了个网易的测开,就是用 Django 开发的测试平台。

FastAPI官方教程太棒了(上)

本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 Python第三流行的Web框架 在2020年的Python开发者调查结果中,有这样一段话:“FastAPI在此次调查迭代中首次被引为选项,表现为Python第三流行的Web框架。” FastAPI创立于2018年12月,不到2年就成为仅次于Flask和Django的第三流行的Web框架。而又经过了一年发展来到2022年,虽然2021年Python开发者调查结果还没有出来,但是从GitHub的star来看,Flask 58.7k,Django 63.6k,FastAPI 44.2k,这个差距缩得越来越小。 FastAPI特性 这里就不做机器翻译了,大家看下原文: 我说下我选择FastAPI的理由:首先就是HttpRunner集成了FastAPI,有大佬背书,相信这个框架足以优秀。其次是注解,用多了SpringBoot以后,越来越喜欢注解,层次清晰。对于前后端分离项目来说,Flask虽然非常精简却又自带了Jinja模板引擎,Django虽然是百宝箱却又显得太重,而FastAPI介于两者之间,就是一个纯粹的后端应用。并且FastAPI是基于Starlette框架的,集成了实用功能比如类型检查、OpenAPI(Swagger)等等,这跟我基于pytest框架做tep测试工具的理念很相似。 安装 对Python版本要求是3.6+。 先安装FastAPI: pip install fastapi 再安装ASGI服务器,比如Uvicorn: pip install "uvicorn[standard]" 也可以同时安装fastapi和uvicorn: pip install "fastapi[all]" 运行 写个main.py文件: from typing import Optional from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"Hello": "World"} @app.get("/items/{item_id}") def read_item(item_id: int, q: Optional[str] = None): return {"item_id": item_id, "q": q} 在命令行输入启动应用: uvicorn main:app --reload main是Python模块名。 app是app = FastAPI()。 --reload在代码变化时自动重启服务器。 打开浏览器访问: http://127.0.0.1:8000/items/5?q=somequery 就能看到JSON响应: {"item_id": 5, "q": "somequery"} 访问: http://127.0.0.1:8000/docs 就能看到Swagger接口文档: pydantic pydantic是一个数据验证的库,FastAPI使用它来做模型校验。比如: ...

Flask一分钟Mock一个API

如果安装了Python,并且安装了Flask:

2026-01-01 · 2 分钟 · 289 字 · 测试开发刚哥 · Python生态 · #Flask

HttpRunner3源码剖析__init__文件干了些啥

大家好,我是刚哥。

pytest快速入门

本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 安装Python和编辑器PyCharm Python安装包下载地址是: https://www.python.org/downloads/ PyCharm安装包下载地址是: https://www.jetbrains.com/pycharm/download/ 下载后按常规软件安装。 pytest pytest是Python内置包,无需单独安装,但是需要设置。 创建1个Project和1个test.py来试试,左上角点击 File | New Project | create,创建项目。在项目中右键选择 New | File 创建test.py 接着设置PyCharm,默认PyCharm自带的测试框架是Unittests,在 File | Settings | Tools | Python Integrated Tools | Testing | Default test runner,修改为pytest 在test.py文件中添加代码 def test(): pass 这个时候def的左边会出现一个绿色的箭头,点击之后就可以使用pytest运行,注意一定要是 pytest for… 才可以,如果只是 Run test.py,是不走pytest执行的(右上角Edit Configurations删掉来解决) 执行之后控制台输出信息就可以了 Testing started at 11:10 AM ... "D:\Program Files (x86)\Python38-32\python.exe" "D:\Program Files\JetBrains\PyCharm Community Edition 2020.1.2\plugins\python-ce\helpers\pycharm\_jb_pytest_runner.py" --target test.py::test Launching pytest with arguments test.py::test in D:\PycharmProjects\untitled ============================= test session starts ============================= platform win32 -- Python 3.8.3, pytest-5.4.3, py-1.9.0, pluggy-0.13.1 -- D:\Program Files (x86)\Python38-32\python.exe cachedir: .pytest_cache rootdir: D:\PycharmProjects\untitled collecting ... collected 1 item test.py::test PASSED [100%] ============================== 1 passed in 0.14s ============================== Process finished with exit code 0 至此,pytest的环境就准备好了。