精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

FastAPI 之自動化測試數據庫接口

運維 數據庫運維 自動化
今天的文章分享如下在 FastAPI 框架下,使用 pytest 來自動化測試數據庫相關的接口,文章的最后給出全部代碼。

[[442950]]

今天的文章分享如下在 FastAPI 框架下,使用 pytest 來自動化測試數據庫相關的接口,文章的最后給出全部代碼。

最近越來越喜歡使用 FastAPI 來寫后端服務了,因為它是 Python 領域性能最好的 Web 框架,它專注于提供高性能的 Web API,其他方面并不限制你的手腳,可以隨意使用你喜歡的三方庫,這點類似于 Flask,可以量身定制你的后端架構,以滿足自己的需求。

需要說明的是,后端服務基本是離不開關系型數據庫的,我之前是使用 Django,Django 的 ORM 太優秀了,以至于我從 Django 轉 FastAPI 有點很不適應。在 ORM 領域,可以說除了 Django 的 ORM,就是 SQLAlchemy 了。所以不用 Django,就必須會用 SQLAlchemy,要快速了解,看看廖雪峰的官方網站的使用 SQLAlchemy[1] 來快速入門。

FastAPI 涉及數據庫的接口寫起來并不難,跟著官方文檔sql_databases[2],5 分鐘,我們就可以生成關于數據庫的增刪改查的 Restful 風格的 API,難的是如何自動化的測試,

通常情況下,我們會使用 pytest 進行自動化單元測試,根據數據庫的記錄數來斷言,但是,每測試一次,數據庫中的記錄就保存了下來,你下次測試時如果不手動清理,那測試仍然可能失敗。

那怎么解決呢?

那就是利用數據庫的回滾功能,會改變數據庫記錄的接口測試完成后讓事務回滾,這樣每次測試完成后,數據庫的記錄數是不變的,每次運行 pytest,數據庫的記錄數是不變的,這樣就可以進行自動化測試。

要想實現這一點,我們需要借助于 pytest 的 fixture 功能。

pytest.fixture 是一個裝飾器,用于聲明函數是一個 fixture。如果測試函數的參數列表中包含 fixture 名,那么 pytest 會檢測到,并在測試函數運行之前執行 fixture。

比如:

  1. import pytest 
  2.  
  3. @pytest.fixture() 
  4. def some_data(): 
  5.     return 42 
  6.  
  7. def test_some_data(some_data): 
  8.     assert some_data==42 

fixture 包含一個 scope 的可選參數,用于控制 fixture 執行配置和銷毀邏輯的頻率:

  • scope='function' 函數級別的 fixture 每個測試函數只運行一次。配置代碼在測試用例運行之前運行,銷毀代碼在測試用例運行之后執行。function 是 fixture 參數的默認值。
  • scope='class' 類級別的 fixture 每個測試類只運行一次,不管測試類中有多少個類方法都可以共享這個 fixture
  • scope='module' 模塊級別的 fixture 每個模塊只運行一次,不管模塊里有多少個測試函數,類方法或其他 fixture 都可以共享這個fixture
  • scope='session' 會話級別的 fixture 每次會話只運行一次。一次 pytest 會話中的所有測試函數、方法都可以共享這個 fixture

比如說讓數據庫回滾的,我們就可以寫一個這樣的 fixture:

  1. @pytest.fixture(scope="function"
  2. def db(db_engine): 
  3.     connection = db_engine.connect() 
  4.     # begin a non-ORM transaction 
  5.     connection.begin() 
  6.     # bind an individual Session to the connection 
  7.     db = Session(bind=connection
  8.     # db = Session(db_engine) 
  9.     app.dependency_overrides[get_db] = lambda: db 
  10.     yield db 
  11.     db.rollback() 
  12.     connection.close() 

當然還有很多 fixture,比如說創建數據庫引擎:

  1. @pytest.fixture(scope="session"
  2. def db_engine(): 
  3.     engine = create_engine(SQLALCHEMY_DATABASE_URL) 
  4.     if not database_exists: 
  5.         create_database(engine.url) 
  6.  
  7.     Base.metadata.create_all(bind=engine) 
  8.     yield engine 

再比如,在測試前,數據庫中先插入 2 條數據:

  1. @pytest.fixture 
  2. def items(db): 
  3.     create_item(db, schemas.ItemCreate(title="item 1")) 
  4.     create_item(db, schemas.ItemCreate(title="item 2")) 

把這些 fixture 函數放在文件名conftest.py 中,pytest 會自動讀取并執行。至于為什么放在 conftest.py中,請查閱 pytest 文檔,這里不展開,

接下來,利用這些 fixture,編寫單元測試用例,一個示例如下:

  1. from fastapi.testclient import TestClient 
  2. from . import crud 
  3. from .main import app 
  4.  
  5. def test_post_items(db): 
  6.     client = TestClient(app) 
  7.     client.post("/items/", json={"title""Item 1"}) 
  8.     client.post("/items/", json={"title""Item 2"}) 
  9.     client.post("/items/", json={"title""Item 3"}) 
  10.  
  11.     items = crud.get_items(db) 
  12.     assert len(items) == 3 
  13.  
  14.  
  15. def test_list_items(items, client): 
  16.     response = client.get("/items"
  17.     assert len(response.json()) == 2 

其中 test_post_items,測試的是提交了 3 個數據,然后斷言數據庫中的記錄數為 3。test_list_items 有個參數是 items,會調用之前的 fixture,提前往數據庫插入了 2 條記錄,因此斷言記錄數為 2。

每個測試函數執行時互不影響,執行完成后,數據庫都會回滾,測試前 items 是空的,測試之后 表仍然是空的,這樣就可以自動進行數據庫的測試了。

完整代碼

不能選擇 sqlite 數據庫進行測試,因為它不支持并發訪問。

 

代碼的數據庫配置為 mysql,用戶名、密碼、數據庫名請自行修改后執行。

 

責任編輯:武曉燕 來源: Python七號
相關推薦

2013-06-07 19:04:15

測試

2018-05-11 08:29:10

Python自動化測試數據驅動

2018-05-11 13:39:05

PythonCSV接口測試

2023-05-18 14:01:00

前端自動化測試

2017-01-17 15:14:49

MySQL數據庫自動化

2011-04-01 15:07:29

數據庫自動化

2023-09-13 11:40:12

2022-12-26 12:30:28

接口測試

2022-02-17 10:37:16

自動化開發團隊預測

2012-02-27 17:34:12

Facebook自動化

2021-09-03 09:56:18

鴻蒙HarmonyOS應用

2013-05-16 10:58:44

Android開發自動化測試

2014-04-16 14:15:01

QCon2014

2010-12-21 13:13:10

BMC數據庫自動化服務

2011-12-23 17:09:57

自動化測試

2021-06-30 19:48:21

前端自動化測試Vue 應用

2012-12-24 22:54:31

2024-11-01 15:05:12

2016-09-23 09:22:12

2022-08-14 16:11:23

Python自動化測試數據
點贊
收藏

51CTO技術棧公眾號

在线观看91精品国产入口| 国产精品自在在线| 国产一区二区免费| 91 视频免费观看| 福利写真视频网站在线| 久久免费看少妇高潮| 国产精品永久免费视频| 欧美日韩大片在线观看| 欧美男男gaytwinkfreevideos| 欧美日韩国产高清一区| www插插插无码视频网站 | 欧美成人一区二区三区| 日韩小视频在线播放| 色多多视频在线观看| 99免费精品视频| 成人黄色中文字幕| 蜜臀精品一区二区三区| 午夜久久福利| 日韩在线视频网站| 蜜桃精品一区二区| 亚洲一区 二区| 欧美日韩aaaaa| 成人三级视频在线播放| 免费在线看污片| 国产精品毛片久久久久久久| 久久久神马电影| 精品人妻少妇AV无码专区| 日韩福利视频导航| 青青草原一区二区| 久久综合成人网| 亚洲欧美在线专区| 日韩在线www| 人人妻人人澡人人爽 | 亚洲免费久久| 性xxxx视频| 成人精品视频一区| 91黄色国产视频| 91福利免费视频| 免费看欧美女人艹b| 日韩女优在线播放| 国产无遮挡呻吟娇喘视频| 激情久久一区| 久久久久久久久久久网站| 国产大片免费看| 欧美xxxx中国| 精品国产美女在线| 中文字幕求饶的少妇| 久久激情电影| 中文字幕免费国产精品| 亚洲最大成人综合网| 国产伦精品一区二区三区视频 | 国产在线高清理伦片a| 国产精品久久久久影院| 亚欧精品在线| 拍真实国产伦偷精品| 国产精品久久久久婷婷| 亚洲成人一区二区三区| 午夜激情视频在线| 中文字幕一区二区在线观看| 中文字幕日韩一区二区三区| 大片免费在线观看| 亚洲欧美区自拍先锋| 在线观看18视频网站| 二区三区在线观看| 亚洲国产日韩综合久久精品| 日韩国产成人无码av毛片| 国产精品偷拍| 欧美视频在线看| 国产精品人人妻人人爽人人牛| 青青热久免费精品视频在线18| 欧美影视一区二区三区| www.久久91| 亚洲国产欧美在线观看| 亚洲第一男人av| a毛片毛片av永久免费| 精品美女久久| 久久伊人精品视频| 国产精品成人久久| 水野朝阳av一区二区三区| 国产精品免费久久久久久| 国产乱叫456在线| 丁香婷婷深情五月亚洲| 久久久久久精| 日本在线看片免费人成视1000| 亚洲欧美成aⅴ人在线观看| 中国丰满熟妇xxxx性| sis001欧美| 欧美色图片你懂的| 老熟女高潮一区二区三区| 亚洲人成网77777色在线播放 | 精品一区二区三区免费观看| 99视频免费观看| 黄色电影免费在线看| 亚洲欧洲综合另类| av免费在线播放网站| 精品一区二区三区中文字幕在线 | 免费人成在线不卡| 99在线观看视频| 久久免费看视频| 亚洲女女做受ⅹxx高潮| 国产精品wwwww| 久久av偷拍| 国产亚洲精品美女久久久| 国产一级大片在线观看| 美女看a上一区| 精品无人区一区二区三区| yellow91字幕网在线| 欧美日韩中文在线| 中文字幕人妻无码系列第三区| 中文有码一区| 欧美日本黄视频| 免费一级a毛片| 99re免费视频精品全部| 欧美一级特黄aaaaaa在线看片| 亚洲涩涩在线| 亚洲国产精品字幕| 校园春色 亚洲| 蜜乳av一区二区三区| 久久青青草综合| 青草青在线视频| 欧美精品久久99久久在免费线 | 久久密一区二区三区| 69av视频在线播放| 一级片一区二区三区| 2019国产精品| 粉嫩av一区二区三区天美传媒| 女同视频在线观看| 91精品国产高清一区二区三区| 色欲av无码一区二区三区| 欧美国产精品| 成人福利在线观看| 国产视频网站在线| 亚洲一区在线看| 欧美激情第四页| 成人午夜av| 欧美有码在线视频| 国产综合视频在线| 亚洲美腿欧美偷拍| 在线播放黄色av| 欧美国产美女| 国产精品久久久久久久app| 天天干天天干天天干| 亚洲精品老司机| 五月婷婷丁香色| 国产剧情在线观看一区| 97色在线播放视频| 日韩一卡二卡在线| 亚洲成人动漫在线观看| 日批视频免费看| 国语精品一区| 91亚洲va在线va天堂va国| 国产精品实拍| 3751色影院一区二区三区| 91成人精品一区二区| 久久婷婷影院| 青青草成人激情在线| 在线天堂资源| 亚洲欧洲国产伦综合| 成年人视频免费| 国产日韩欧美不卡在线| 麻豆av免费在线| 国产日韩视频在线| 国产ts一区二区| 色视频精品视频在线观看| 婷婷国产在线综合| av直播在线观看| 99综合视频| 欧美日韩高清免费| 青青热久免费精品视频在线18| 日韩亚洲欧美中文在线| 亚洲专区在线播放| 中文字幕在线一区免费| 日本一本在线视频| 国产精品vip| 91手机在线视频| 91黄页在线观看| 亚洲男人天堂九九视频| 成人免费一级片| 国产精品久久久久毛片软件| 欧美性猛交xxxx乱大交91| 欧美成人精品| 国产在线资源一区| 日韩高清中文字幕一区二区| 搡老女人一区二区三区视频tv| 中文字幕第2页| 伊人夜夜躁av伊人久久| 午夜剧场免费看| 久热综合在线亚洲精品| 亚洲综合欧美日韩| 亚洲综合影院| 国产精品久久久久福利| 瑟瑟视频在线| 91精品一区二区三区久久久久久| 久久久久久久蜜桃| 99re热这里只有精品免费视频| www.日本xxxx| 亚洲电影在线一区二区三区| 久久99精品久久久久久三级| 91精品美女| 九九热精品视频在线播放| 四虎在线观看| 91精品婷婷国产综合久久性色| 精品人妻在线播放| 久久久精品天堂| 一二三级黄色片| 99精品国产福利在线观看免费 | 国产精品无av码在线观看| 欧美xxxx视频| 在线电影av不卡网址| 精品国产无码AV| 日韩欧美中文字幕在线播放| 久久久久久激情| 国产精品―色哟哟| 西西大胆午夜视频| 国产在线观看一区二区| 91蝌蚪视频在线观看| 一区三区视频| 在线观看免费91| 精品一区三区| 国产精品久久久久av福利动漫| 伊人久久大香伊蕉在人线观看热v 伊人久久大香线蕉综合影院首页 伊人久久大香 | 一区视频二区视频| 欧美有码在线| 91精品天堂| 欧美高清你懂的| 欧美在线一级va免费观看| 黄页视频在线播放| 在线观看欧美视频| 日韩专区一区二区| 精品国产一二三| 国产草草影院ccyycom| 色www精品视频在线观看| 美日韩一二三区| 亚洲一区二区五区| 中文字幕电影av| 一色桃子久久精品亚洲| 美女又爽又黄免费| 成人国产免费视频| 色婷婷狠狠18禁久久| 国产一区二区不卡老阿姨| 17c国产在线| 久久99久久精品欧美| 亚洲黄色av网址| 久久免费国产| 欧美一区二区三区爽大粗免费| 欧美精品一区二区三区久久久竹菊| 日本精品免费视频| 久久激情电影| 亚洲欧美日产图| 欧美先锋资源| 欧美日韩高清免费| 加勒比久久综合| 欧洲精品亚洲精品| 九色精品国产蝌蚪| 欧洲一区二区在线观看| 精品国产精品国产偷麻豆| 欧美日韩一区二区三区在线视频 | 蜜桃视频成人| 日韩aaa久久蜜桃av| 久久久久久国产精品mv| 蜜乳av综合| 色中色综合成人| 成人黄色av| 制服丝袜综合日韩欧美| 欧美亚洲精品在线| 天天综合五月天| 欧美韩国一区| 无码 制服 丝袜 国产 另类| aⅴ色国产欧美| xxxx一级片| 麻豆freexxxx性91精品| 爱豆国产剧免费观看大全剧苏畅 | 国产一区二区三区在线观看网站 | 国产精品久久国产三级国电话系列| 视频精品一区| 精品91免费| 国产精品嫩草影院在线看| 日韩精品大片| 欧美大人香蕉在线| 国模吧一区二区| 蜜乳av一区| 久久久久免费视频| 日韩理论视频| 国产精品免费久久久| 欧美成人一二区| 91黄在线观看| 亚洲第一福利社区| 亚洲午夜久久久影院伊人| 成人毛片在线| www.av中文字幕| 老司机午夜精品| 男人添女人荫蒂国产| 久久亚洲精华国产精华液| 婷婷伊人五月天| 亚洲福利电影网| 中文字幕1区2区3区| 日韩精品专区在线| 婷婷五月综合久久中文字幕| 亚洲精选中文字幕| 久做在线视频免费观看| 97视频国产在线| 不卡av播放| 国产福利一区二区三区在线观看| 奇米777国产一区国产二区| 日本精品一区二区三区视频| 中文无码久久精品| 久久午夜夜伦鲁鲁一区二区| 国产精品资源站在线| 国产男男chinese网站| 国产精品白丝在线| 日本视频网站在线观看| 日韩欧美中文字幕公布| 国内爆初菊对白视频| 日韩资源在线观看| 男女免费观看在线爽爽爽视频| 国产精品十八以下禁看| 国产 日韩 欧美 综合 一区| 亚洲欧美精品在线观看| 亚洲国产电影| 一女二男3p波多野结衣| 不卡视频一二三| 欧美mv日韩mv国产网站app| 国产成人精品毛片| 亚洲色图在线观看| 77thz桃花论族在线观看| 91系列在线播放| 菠萝蜜一区二区| 国产男女无遮挡| 成人中文字幕电影| 三级影片在线看| 日韩欧美在线视频免费观看| 亚洲国产精品suv| 久久视频在线直播| 国产一区二区av在线| 亚洲精品中字| 日韩精彩视频在线观看| 91成人在线观看喷潮蘑菇| 亚洲美女精品一区| 国产精品一区二区人人爽| 最近的2019中文字幕免费一页| 国产乱码午夜在线视频| 超碰97在线人人| 欧美va亚洲va日韩∨a综合色| 国产高清视频网站| 久久久亚洲午夜电影| 亚洲影院在线播放| 精品性高朝久久久久久久| a'aaa级片在线观看| 91亚洲精华国产精华| 亚洲精品二区三区| 岛国av在线免费| 中文字幕国产一区| 波多野结衣毛片| 最近2019中文字幕第三页视频| 欧美日一区二区三区| 日韩国产高清一区| 视频一区欧美精品| 欧美波霸videosex极品| 在线视频一区二区三| 黄色视屏网站在线免费观看| 性色av一区二区三区免费 | 一本一道久久a久久精品综合蜜臀| 香蕉视频黄色片| 欧美又大又粗又长| 国产精品嫩模av在线| 国产女女做受ⅹxx高潮| 中文幕一区二区三区久久蜜桃| 中文在线免费看视频| 日韩中文av在线| 久久久久毛片| 中文字幕在线中文| 成人毛片在线观看| 中文字幕超碰在线| 亚洲精品中文字幕av| 日本在线影院| 蜜桃精品久久久久久久免费影院| 日韩精品一二区| 亚洲精品卡一卡二| 欧美一级高清片| 97人人爽人人澡人人精品| 精品久久蜜桃| 葵司免费一区二区三区四区五区| 欧美黄色一级生活片| 欧洲精品一区二区| 伊人精品影院| 久久久久久一区| 免费一区二区视频| 国产无码精品在线播放| 亚洲精品日韩欧美| 国产日本久久| 2021狠狠干| 久久伊人中文字幕| 亚洲天堂久久久久| 97热在线精品视频在线观看| 欧美日韩激情| 动漫av在线免费观看| 在线日韩一区二区| 99在线视频影院| 亚洲国产婷婷香蕉久久久久久99| 国产99一区视频免费|