FastAPI 學習之路(三十九)對開發接口進行測試 FastAPI 學習之路(三十七)元數據和文檔 URL


        對於開發好的接口需要進行測試之後次才能發佈。當我們在開發的時候,沒有提測前,我們也要對我們自己的接口進行測試,那麼FastAPI 自身也帶了針對開發的接口的測試的。我們看下FastAPI官方給我們了什麼樣的支持呢。

        接口還是基於FastAPI 學習之路(三十七)元數據和文檔 URL實現。我們看下如何測試。

from fastapi import FastAPI
from fastapi.testclient import TestClient
from routers.user import usersRouter
from routers.items import itemsRouter

app = FastAPI(docs_url="/openapi",
              redoc_url="/apidoc")
app.include_router(usersRouter, prefix="/user", tags=['users'])
app.include_router(itemsRouter, prefix="/items", tags=['Itmes'])

client = TestClient(app)
def test_read_main():
    response = client.get("/items/items/")
    assert response.status_code == 200
    assert response.json() == []
if __name__=="__main__":
    test_read_main()

 其實很簡單,fastapi裏面有個模塊,我們直接導入進來,編寫用例即可。

        可是我們簡單的寫的,運行後只是沒有報錯而已。證明執行成功,但是在實際中,我們做還是不夠的,我們想要看着是否執行通過。如何實現呢。

    我們可以python自帶的unittest來組織測試用例。

    我們看下改造後的。

from fastapi import FastAPI
from fastapi.testclient import TestClient
from routers.user import usersRouter
from routers.items import itemsRouter
import  unittest
app = FastAPI(docs_url="/openapi",
              redoc_url="/apidoc")
app.include_router(usersRouter, prefix="/user", tags=['users'])
app.include_router(itemsRouter, prefix="/items", tags=['Itmes'])

class FastApiTest(unittest.TestCase):
    def setUp(self) -> None:
        self.client = TestClient(app)
    def tearDown(self) -> None:
        self.client=None


    def test_read_main(self):
        response = self.client.get("/items/items/")
        self.assertEqual(response.status_code,200)
        self.assertEqual(response.json(),[])
    def test_read_one(self):
        response = self.client.get("/items/items/?limit=1")
        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.json()), 1)


if __name__=="__main__":
    unittest.main()

    我們看下執行結果

 

 我們可以改造下,單獨放在一個test文件中。

 

 改造後的測試文件

from  main import app
import  unittest
from fastapi.testclient import TestClient


class FastApiTest(unittest.TestCase):
    def setUp(self) -> None:
        self.client = TestClient(app)

    def tearDown(self) -> None:
        self.client = None

    def test_read_main(self):
        response = self.client.get("/items/items/")
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.json(), [])

    def test_read_one(self):
        response = self.client.get("/items/items/?limit=1")
        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.json()), 1)


if __name__ == "__main__":
    unittest.main()

我們可以執行以下

 

 

這樣我們就實現了對fastapi在開發過程中的接口測試,很簡單,我們也不用啓動服務端。

        

文章首發在公衆號,歡迎關注。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章