🦁
【AI_8日目】FastAPI_1冊目
こんにちは投資ロウトです。
背景
AI開発ができるためにwebAPIについて理解を深めていきます。
※Tailwind CSSとkeycloakは現場でピンチになれば再開します。
テストフレームワーク
pythonで有名なテストフレームワークは、pytestとのことで、mysqlを実際に呼び出すのではなく、SQLiteを使うとオーバーヘッドが大きい問題は、解決されるとのことでした。mockなどそういった概念があるのではと思うと、やはりpythonにもmockのライブラリはありそうでした。
テストに必要なライブラリ等も入れていく。
docker compose exec アプリ名 poetry add -G dev pytest-asyncio aiosqlite httpx
-G devと指定すると、本番環境のデプロイではスキップされる開発環境のみで、インストールされる設定があるとのことでした。npmインストールでは聞いたことがない機能(知らないだけかも)だったので、ここは斬新でした。
テスト実施
今まで作ったテストコードをテストしていきます。DBはSQLiteを使うように上書きされております。
やはり気になるところは、テスト用に追加コードであるSQLiteを使っているのは、テストコードでさらに追加実装しているのは、気になるところですね。。。
import starlette.status
@pytest.mark.asyncio
async def test_create_and_read(async_client):
response = await async_client.post("/stocks", json={"stock_name": "テスト実施中の投資ロウト株式会社"})
assert response.status_code == starlette.status.HTTP_200_OK
response_obj = response.json()
assert response_obj["stock_name"] == "テスト実施中の投資ロウト株式会社"
response = await async_client.get("/stocks")
assert response.status_code == starlette.status.HTTP_200_OK
response_obj = response.json()
assert len(response_obj) == 1
assert response_obj[0]["stock_name"] == "テスト実施中の投資ロウト株式会社"
テストを実施していきます。
docker compose run --entrypoint "poetry run pytest" アプリ名
警告は出ましたが、テストは通ったようです。
と短いですが章が変わるので、一旦学習を区切りたいと思います。焦らずコツコツ自分のペースでできればと思います。ご精読ありがとうございました。亀のようにノロノロと前に進んでいきたいと思います。
Discussion