🐍
pytest で E2E テスト
pytest で E2E テストが本当に便利です。
実際どう使っているかを紹介しておきます。
なぜ Python でテストなのか
- 自分が Python に慣れている
- 自分にとって pytest を超えるテストランナーが今のところない
- SpaceX がテストを Python で書いてて、じゃぁ Python でいいかとなった
- https://old.reddit.com/r/spacex/comments/gxb7j1/we_are_the_spacex_software_team_ask_us_anything/ft0bz35/
We use C & C++ for flight software, HTML, JavaScript & CSS for displays and python for testing.
- Rye のおかげで Python の環境構築が苦にならなくなった
-
assert a == b
という書き方はシンプルで良い -
httpx
やaiohttp
などの便利な HTTP 関連のライブラリがある - Python SDK を自前で持っている
- Playwright の Python / pytest plugin を公式がメンテしてくれている
pytest と 自社製品 Python SDK を利用して E2E テスト
自社では WebRTC のミドルウェアソフトウェアを開発、販売しており、クラスターに対応しています。
このクラスターのテストは E2E テストを利用しています。
pytest を実行するとクラスターを構築し、それに自社製品の Python SDK を利用して実際に接続しにいっています。
自社製品の Python SDK
自社製品の Python SDK はブラウザで利用されている WebRTC をラップした C++ ベースの自社製品用の SDK を nanobind で Python にバインドしたものです。
そのためモックやスタブを利用することなく、実際の挙動をテストすることができます。
pytest と Playwright を利用して E2E テスト
Playwright の Python 版は MS が公式にメンテしてくれています。
さらに pytest プラグインも公式で提供してくれています。
この機能を使うことで、ブラウザの E2E テストを Python で簡単に書くことができます。
Discussion