<ruby id="9ue20"></ruby>

  1. 
    

      国产午夜福利免费入口,国产日韩综合av在线,精品久久人人妻人人做精品,蜜臀av一区二区三区精品,亚洲欧美中文日韩在线v日本,人妻av中文字幕无码专区 ,亚洲精品国产av一区二区,久久精品国产清自在天天线
      網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

      調(diào)教了一個AI Agent,全天自動寫測試用例:準確率提升70%+

      0
      分享至

      一、FastAPI框架簡介

      1.1 FastAPI框架簡介

      FastAPI是一個用于構建API的現(xiàn)代、快速(高性能)的Web框架,基于Python 3.7+的類型提示,建立在Starlette和Pydantic基礎之上。

      FastAPI框架有以下特性:

      Starlette:輕量級的 ASGI 框架/工具包,是構建高性能 Asyncio 服務的理想選擇

      Pydantic:基于 Python 類型提示來定義數(shù)據(jù)驗證、序列化和文檔的庫

      FastAPI 的核心特性:

      1.快速:可與 NodeJS 和 Go 比肩的極高性能,是最快的 Python Web 框架之一

      2.智能:極佳的編輯器支持,處處皆可自動補全,減少調(diào)試時間

      3.簡單:設計的易于使用和學習,閱讀文檔的時間更短

      4.簡短:使代碼重復最小化,通過不同的參數(shù)聲明實現(xiàn)豐富功能

      5.健壯:生產(chǎn)可用級別的代碼,還有自動生成的交互式文檔

      6.標準化:基于(并完全兼容)API 的相關開放標準:OpenAPI 和 JSON Schema



      1.2 為什么選擇FastAPI框架

      讓我們從多個維度詳細對比 FastAPI、Flask 和 Django REST Framework框架:



      FastAPI 的性能優(yōu)勢:

      ●基于 ASGI(異步服務器網(wǎng)關接口),而非傳統(tǒng)的 WSGI

      ●原生支持 async/await,充分利用 Python 異步特性

      ●使用 Uvicorn 作為 ASGI 服務器,性能接近 Go 和 Node.js

      選擇 FastAPI 框架的理由:

      1.原生異步支持:完美支持 async/await,適合 I/O 密集型應用

      2.自動數(shù)據(jù)驗證:基于 Pydantic,自動驗證請求數(shù)據(jù)并生成清晰的錯誤信息

      3.自動文檔生成:無需額外配置即可生成交互式 API 文檔(Swagger UI 和 ReDoc)

      4.類型安全:完整的類型提示支持,IDE 自動補全和類型檢查

      5.高性能:基于 ASGI,性能接近 Go 和 Node.js

      6.現(xiàn)代化設計:充分利用 Python 3.7+ 的新特性

      二、FastAPI開發(fā)環(huán)境配置

      2.1 環(huán)境準備

      系統(tǒng)要求:

      ●建議使用Python 3.12

      ●pip 包管理器

      2.2 安裝依賴

      # 創(chuàng)建虛擬環(huán)境(推薦)
      python -m venv venv
      source venv/bin/activate # Linux/Mac
      # 或
      venv\Scripts\activate # Windows
      # 安裝 FastAPI 和 Uvicorn
      pip install fastapi uvicorn[standard]
      # 安裝項目依賴
      pip install tortoise-orm aiosqlite # ORM 和數(shù)據(jù)庫
      pip install pydantic pydantic-settings # 數(shù)據(jù)驗證和配置
      pip install chromadb # 向量數(shù)據(jù)庫
      pip install crewai # Agent 框架
      pip install python-multipart # 文件上傳支持

      2.3 項目結構

      FastAPI項目有這著其簡潔清晰和可維護的項目結構,強烈推薦的最佳實踐的項目結構如下:

      XMaster/
      ├── backend/ # 后端項目
      │ ├── main.py # FastAPI 應用入口
      │ ├── base/ # 基礎模塊
      │ │ ├── config.py # 配置管理
      │ │ ├── db_action.py # 數(shù)據(jù)庫操作
      │ │ ├── embedding_vector.py # 向量嵌入
      │ │ └── logger_config.py # 日志配置
      │ ├── models/ # 數(shù)據(jù)模型
      │ │ ├── user.py
      │ │ ├── knowledge.py
      │ │ └── test_case.py
      │ ├── schemas/ # Pydantic 模式
      │ ├── api/ # API 路由
      │ ├── agents/ # Agent 智能體
      │ │ ├── case_generator_agent.py
      │ │ └── rag_retrieval_agent.py
      │ ├── services/ # 業(yè)務邏輯
      │ └── data/ # 數(shù)據(jù)存儲
      │ ├── sys-sqlite.db # SQLite 數(shù)據(jù)庫
      │ └── vector_db/ # ChromaDB 向量庫
      └── vue-front/ # 前端項目
      ├── src/
      │ ├── views/ # 頁面組件
      │ ├── components/ # 通用組件
      │ ├── stores/ # Pinia 狀態(tài)管理
      │ └── api/ # API 接口
      └── package.json



      三、FastAPI實戰(zhàn)

      3.1 最簡FastAPI應用示例

      import uvicorn
      # 導入FastAPI類
      from fastapi import FastAPI
      # 創(chuàng)建FastAPI實例,實例名自定義
      FastApp = FastAPI()
      @FastApp.get("/")
      async def root():
      return {"message": "Hello World"}
      @FastApp.get("/hello/{name}")
      async def say_hello(name: str):
      return {"message": f"Hello {name}"}
      if __name__ == "__main__":
      uvicorn.run("main:FastApp", host="0.0.0.0", port=8000, reload=True)

      運行應用:

      python main.py

      訪問http://localhost:8000,我們會看到:

      {"message": "Hello World"}

      訪問http://localhost:8000/hello/FastAPI,我們會看到:

      {"message": "Hello FastAPI"}

      FastAPI 的核心特性解析:

      1. 自動生成交互式 API 文檔

      ●訪問http://localhost:8000/docs,我們會看到自動生成的Swagger UI文檔:



      ●訪問http://localhost:8000/redoc,會看到ReDoc風格的文檔。

      2. 類型提示和自動驗證

      @FastApp.get("/hello/{name}")
      async def say_hello(name: str): # 類型提示:name 必須是字符串
      return {"message": f"Hello {name}"}

      FastAPI 會自動完成下述事務:

      ●驗證 name 是否為字符串

      ●在文檔中顯示參數(shù)類型

      ●提供編輯器自動補全

      3. 異步支持

      @FastApp.get("/")
      async def root(): # 使用 async 關鍵字
      return {"message": "Hello World"}

      ●使用 async def 定義異步路由

      ●支持 await 調(diào)用異步函數(shù)

      ●充分利用 Python 異步特性,提升并發(fā)性能

      4. 自動 JSON 序列化

      FastAPI 自動將 Python 字典轉換為 JSON 響應,無需手動序列化。

      3.2 FastAPI 應用類

      FastAPI 應用類是整個應用的核心,負責路由注冊、中間件配置、生命周期管理等。

      創(chuàng)建 FastAPI 實例
      from fastapi import FastAPI
      from contextlib import asynccontextmanager
      @asynccontextmanager
      async def lifespan(app: FastAPI):
      """應用生命周期管理"""
      # 啟動時執(zhí)行
      print("應用啟動中...")
      await init_database() # 初始化數(shù)據(jù)庫
      yield # 應用運行中
      # 關閉時執(zhí)行
      print("應用關閉中...")
      await close_database() # 關閉數(shù)據(jù)庫連接
      # 創(chuàng)建 FastAPI 應用實例
      app = FastAPI(
      title="XAuto智能體平臺",
      version="1.0.0",
      description="基于 FastAPI + CrewAI 的測試用例生成平臺",
      lifespan=lifespan # 生命周期管理
      )

      FastAPI 實例參數(shù)說明:



      配置 CORS 中間件

      from fastapi.middleware.cors import CORSMiddleware
      app.add_middleware(
      CORSMiddleware,
      allow_origins=["*"], # 允許的源
      allow_credentials=True,
      allow_methods=["GET", "POST", "PUT", "DELETE", "OPTIONS"],
      allow_headers=["*"],
      )

      全局異常處理

      from fastapi import Request, HTTPException
      from fastapi.responses import JSONResponse
      @app.exception_handler(HTTPException)
      async def http_exception_handler(request: Request, exc: HTTPException):
      """HTTP 異常處理器"""
      returnJSONResponse(
      status_code=exc.status_code,
      content={"message": exc.detail}
      )
      @app.exception_handler(Exception)
      async def global_exception_handler(request: Request, exc: Exception):
      """全局異常處理器"""
      returnJSONResponse(
      status_code=500,
      content={"message": f"服務器內(nèi)部錯誤: {str(exc)}"}
      )

      3.3 FastAPI的請求路由系統(tǒng)

      3.3.1 路由參數(shù)

      路由參數(shù)(Path Parameters)是 URL 路徑的一部分。

      from fastapi import Path
      @app.get("/items/{item_id}")
      async def read_item(
      item_id: int = Path(..., title="商品ID", ge=1, le=1000)
      ):
      """
      獲取商品信息
      - item_id: 商品ID,范圍 1-1000
      """
      return{"item_id": item_id, "name": f"商品{item_id}"}

      路徑參數(shù)驗證:



      3.3.2 查詢參數(shù)

      查詢參數(shù)(Query Parameters)是URL中?后面的參數(shù)。

      from fastapi import Query
      from typing import Optional, List
      @app.get("/search")
      async def search_items(
      q: str = Query(..., min_length=1, max_length=50, description="搜索關鍵詞"),
      page: int = Query(1, ge=1, description="頁碼"),
      size: int = Query(10, ge=1, le=100, description="每頁數(shù)量"),
      tags: Optional[List[str]] = Query(None, description="標簽列表")
      ):
      """
      搜索商品
      - q: 搜索關鍵詞(必填)
      - page: 頁碼(默認 1)
      - size: 每頁數(shù)量(默認 10,最大 100)
      - tags: 標簽列表(可選)
      """
      return{
      "query": q,
      "page": page,
      "size": size,
      "tags": tags or []
      }

      示例請求:

      GET /search?q=FastAPI&page=1&size=20&tags=python&tags=web

      3.3.3 請求體

      使用 Pydantic 模型定義請求體。

      from pydantic import BaseModel, Field
      from typing import Optional
      class Item(BaseModel):
      """商品模型"""
      name: str = Field(..., min_length=1, max_length=100, description="商品名稱")
      description: Optional[str] = Field(None, max_length=500, description="商品描述")
      price: float = Field(..., gt=0, description="商品價格")
      tax: Optional[float] = Field(None, ge=0, description="稅費")
      @app.post("/items")
      async def create_item(item: Item):
      """
      創(chuàng)建商品
      """
      item_dict = item.model_dump()
      if item.tax:
      price_with_tax = item.price + item.tax
      item_dict.update({"price_with_tax": price_with_tax})
      return item_dict

      示例請求:

      POST /items
      Content-Type: application/json
      {
      "name": "FastAPI 教程",
      "description": "一本關于 FastAPI 的書",
      "price": 99.99,
      "tax": 10.0
      }

      Pydantic 模型的優(yōu)勢:

      ●自動數(shù)據(jù)驗證

      ●自動生成 JSON Schema

      ●自動生成 API 文檔

      ●類型提示和編輯器支持

      3.3.4 Form表單數(shù)據(jù)

      處理 HTML 表單提交的數(shù)據(jù)。

      from fastapi import Form
      @app.post("/login")
      async def login(
      username: str = Form(..., min_length=3, max_length=50),
      password: str = Form(..., min_length=6)
      ):
      """
      用戶登錄
      """
      return {"username": username, "message": "登錄成功"}

      示例請求:

      POST /login
      Content-Type: application/x-www-form-urlencoded
      username=admin&password=123456

      3.3.5 文件上傳

      FastAPI 支持單文件和多文件上傳。

      from fastapi import File, UploadFile
      from typing import List
      import shutil
      @app.post("/upload")
      async def upload_file(file: UploadFile = File(...)):
      """
      單文件上傳
      """
      # 保存文件
      file_path = f"./uploads/{file.filename}"
      with open(file_path, "wb") as buffer:
      shutil.copyfileobj(file.file, buffer)
      return{
      "filename": file.filename,
      "content_type": file.content_type,
      "size": file.size
      }
      @app.post("/upload-multiple")
      async def upload_multiple_files(files: List[UploadFile] = File(...)):
      """
      多文件上傳
      """
      uploaded_files = []
      for file in files:
      file_path = f"./uploads/{file.filename}"
      with open(file_path, "wb") as buffer:
      shutil.copyfileobj(file.file, buffer)
      uploaded_files.append({
      "filename": file.filename,
      "size": file.size
      })
      return {"files": uploaded_files}

      ??轉崗軟件測試/野路子技能提升

      ??想了解更多漲薪技能提升方法

      ??可以到我的個人號:atstudy-js

      即可加入領取 ??????

      轉行、入門、提升、需要的各種干貨資料

      內(nèi)含AI測試、 車載測試、AI大模型開發(fā)、BI數(shù)據(jù)分析、銀行測試、游戲測試、AIGC

      特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。

      Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

      相關推薦
      熱點推薦
      薩巴倫卡展示法網(wǎng)大膽透視戰(zhàn)袍,粉絲狂贊:至今最強造型

      薩巴倫卡展示法網(wǎng)大膽透視戰(zhàn)袍,粉絲狂贊:至今最強造型

      體育妞世界
      2026-05-09 09:07:39
      紅藍大戰(zhàn)握手言和!利物浦平切爾西,英超“六席歐冠”恐成為泡影

      紅藍大戰(zhàn)握手言和!利物浦平切爾西,英超“六席歐冠”恐成為泡影

      星耀國際足壇
      2026-05-09 21:56:30
      章子怡沒想到,清空賬號、劃清界限的森林北,揭開汪峰僅剩的體面

      章子怡沒想到,清空賬號、劃清界限的森林北,揭開汪峰僅剩的體面

      好賢觀史記
      2026-05-08 15:53:17
      高盛:A股將漲到5300點,高盛重倉26股又漲停。這波被外資賺走了

      高盛:A股將漲到5300點,高盛重倉26股又漲停。這波被外資賺走了

      風風順
      2026-05-09 07:33:45
      魯比奧:如果俄烏談判再無進展 美方不愿再“浪費時間”

      魯比奧:如果俄烏談判再無進展 美方不愿再“浪費時間”

      財聯(lián)社
      2026-05-09 04:47:18
      北京半場領先廣東9分:胡明軒12分周琦遭隔扣 翟曉川誤撞杜鋒

      北京半場領先廣東9分:胡明軒12分周琦遭隔扣 翟曉川誤撞杜鋒

      醉臥浮生
      2026-05-09 20:27:27
      7800億軍購案59:0通過!藍營一人叛離,趙少康強勢發(fā)起挑戰(zhàn)

      7800億軍購案59:0通過!藍營一人叛離,趙少康強勢發(fā)起挑戰(zhàn)

      流史歲月
      2026-05-09 20:10:03
      俄羅斯發(fā)動報復性打擊

      俄羅斯發(fā)動報復性打擊

      第一財經(jīng)資訊
      2026-05-09 08:54:39
      難以置信!連云港一工廠以遭遇群體性阻撓、無法經(jīng)營為由停產(chǎn)整頓

      難以置信!連云港一工廠以遭遇群體性阻撓、無法經(jīng)營為由停產(chǎn)整頓

      火山詩話
      2026-05-09 16:19:21
      成都對陣河南遭三連敗,為隊史中超對陣單一對手最長連敗紀錄

      成都對陣河南遭三連敗,為隊史中超對陣單一對手最長連敗紀錄

      懂球帝
      2026-05-09 19:32:04
      莫氏雞煲,煲了什么稀奇的東西?

      莫氏雞煲,煲了什么稀奇的東西?

      果殼
      2026-05-08 20:30:19
      1984年葉劍英病危,追悼會花圈已備好,35歲才當醫(yī)生的鐘南山憑什么臨危受命救回元帥?

      1984年葉劍英病危,追悼會花圈已備好,35歲才當醫(yī)生的鐘南山憑什么臨危受命救回元帥?

      史海孤雁
      2026-05-09 19:13:11
      曝王暖暖凌晨被送往醫(yī)院搶救!全身浮腫、滿臉脹紅,昏迷原因曝光

      曝王暖暖凌晨被送往醫(yī)院搶救!全身浮腫、滿臉脹紅,昏迷原因曝光

      阿廢冷眼觀察所
      2026-05-08 18:26:49
      中國境內(nèi)唯一一支外國軍隊,趕了50年趕不走,至今仍駐扎在北京

      中國境內(nèi)唯一一支外國軍隊,趕了50年趕不走,至今仍駐扎在北京

      可樂愛微笑
      2026-05-07 02:35:38
      騎士迎背水一戰(zhàn)!再輸球便陷入絕境,哈登期待復蘇馳援米切爾

      騎士迎背水一戰(zhàn)!再輸球便陷入絕境,哈登期待復蘇馳援米切爾

      體壇小李
      2026-05-09 21:57:29
      黃瓜立大功?醫(yī)生發(fā)現(xiàn):經(jīng)常吃黃瓜的人,不出半年,或有4大改善

      黃瓜立大功?醫(yī)生發(fā)現(xiàn):經(jīng)常吃黃瓜的人,不出半年,或有4大改善

      芹姐說生活
      2026-05-09 21:08:03
      陳翔六點半老員工吳媽去世,陳翔暫未回應,妹爺也已經(jīng)退出多年

      陳翔六點半老員工吳媽去世,陳翔暫未回應,妹爺也已經(jīng)退出多年

      蜜桔娛樂
      2026-05-09 16:29:52
      隨著朱辰杰連入2球救主+比分2-2,上海申花逼平中超第2,終結2連敗

      隨著朱辰杰連入2球救主+比分2-2,上海申花逼平中超第2,終結2連敗

      俯身沖頂
      2026-05-09 21:34:53
      韓國這一天,玄彬面相變了,孫藝珍韻味足,金高銀全場最美

      韓國這一天,玄彬面相變了,孫藝珍韻味足,金高銀全場最美

      八卦南風
      2026-05-09 11:16:24
      看美加墨世界杯,央視嫌貴,特朗普也嫌貴!

      看美加墨世界杯,央視嫌貴,特朗普也嫌貴!

      新民周刊
      2026-05-09 09:07:50
      2026-05-09 22:27:00
      51Testing軟件測試網(wǎng) incentive-icons
      51Testing軟件測試網(wǎng)
      中國軟件測試人的精神家園
      1567文章數(shù) 13263關注度
      往期回顧 全部

      科技要聞

      美國政府強力下場 蘋果英特爾達成代工協(xié)議

      頭條要聞

      香港富豪孫女被綁架 綁匪拿到2800萬后逃跑8人花11萬

      頭條要聞

      香港富豪孫女被綁架 綁匪拿到2800萬后逃跑8人花11萬

      體育要聞

      成立128年后,這支升班馬首奪頂級聯(lián)賽冠軍

      娛樂要聞

      50歲趙薇臉頰凹陷滄桑得認不出!

      財經(jīng)要聞

      多地號召,公職人員帶頭繳納物業(yè)費

      汽車要聞

      軸距加長/智駕拉滿 阿維塔07L定位大五座SUV

      態(tài)度原創(chuàng)

      藝術
      手機
      旅游
      家居
      健康

      藝術要聞

      齊白石 紫藤蜜蜂

      手機要聞

      消息稱今年市場除華為Pura X Max外,還有3臺闊折疊即將發(fā)布

      旅游要聞

      看見古村|浙江東屏村:石墻承歲月 紅妝潤古今

      家居要聞

      菁英人居 全能豪宅

      干細胞能讓人“返老還童”嗎

      無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 青草视频免费在线观看| 精品亚洲无人区一区二区| 国产午夜无码视频免费网站| 望江县| 国产亚洲精品性爱视频| 国产精品99久久免费| 熟女人妻视频| 亚洲激情图| 扒开双腿被两个男人玩弄视频| 久久棈精品久久久久久噜噜| 精品国产亚洲一区二区三区演员表 | 文昌市| 深喉口爆丝袜在线观看| 性色AV一区二区三区咪爱四虎| 国产一区二区三区韩国| 日韩本精品一区二区三区| 淫射网| 色中色成人导航| 亚洲AV高清无码| 国产精品资源手机在线播放| 国产二区精品久久| 91久久天天躁狠狠躁夜夜| 成人国产精品一区二区网站公司| 99久久精品久久久久久婷婷| 五台县| 亚洲综合网站久久久| 国产无遮挡a片又黄又爽| 91久久性奴调教国产免费| 欧美成人精品三级网站| 亚洲一区二区三区av在线| 激情综合色五月丁香六月亚洲| 亚洲不卡的av| 熟女综合| 成人在线亚洲| 欧美视频专区一二在线观看| 日韩人妻少妇一区二区三区 | 亚洲中文人妻无码| 国产精品刺激对白在线| 國產尤物AV尤物在線觀看| 亚洲AV福利天堂在线观看| 国产久久热这里只有精品|