Open2
FastAPI + SQLAlchemy でpytestのcoverageが100%いかない件
これと同じ現象なんだけど、asyncioなsqlalchemyを使うと、awaitした後のコードが(間違いなく動いているにも関わらずに)coverageが認識されない件
ざっくりした理由
asyncioするのに
SQLAlchemyはgreenlets
FastAPIはthreads
と、違う方式をつかってるのが原因(というかそれでpytestが両方のイベントループを世話できてないのが原因)
coverageの設定で対応可能
とりあえずいろいろやってみて、ウチの .coveragerc はこんな感じになりました
ryo@rx1:~/work/fastapi$ cat .coveragerc
[run]
concurrency =
multiprocessing
greenlet
thread
omit =
api/main.py
api/db.py
その他でつかってるライブラリの状況によっても変わってくるとは思うんで、そこらへんはよろしく!
おまけ
sqlalchemyがjoinするテーブルで同じフィールド名があるといちいち小うるさくSAWarningを出してくるの、完全にスルーしたいので
ryo@rx1:~/work/fastapi$ cat pytest.ini
[pytest]
filterwarnings=
ignore::sqlalchemy.exc.SAWarning
ってやってます