-
Notifications
You must be signed in to change notification settings - Fork 196
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
e2eテストのTestClientをfixtureにする #737
The head ref may contain hidden characters: "e2e\u30C6\u30B9\u30C8\u306Esession\u3092fixture\u306B\u3059\u308B"
Conversation
test/e2e/generate_test_client.py
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ファイルをムーブしただけ
def test_fetch_version_success(client: TestClient): | ||
response = client.get("/version") | ||
assert response.status_code == 200 | ||
assert response.json() == __version__ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@stmtk1 こんな感じで、引数でclientを取得できます!
以前のimportするコードとほとんど変わらないかなと・・・!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
自分の環境では、pytest
だとrun
がimportできずに落ちてしまいました。
(現在のmasterでは動作)
coverage run --omit=test/* -m pytest
だときちんと動作しました。
エラーログ
$ pytest
===================================================================================================== test session starts ======================================================================================================
platform win32 -- Python 3.11.3, pytest-6.2.5, py-1.11.0, pluggy-1.2.0
rootdir: C:\Users\takana\Github\voicevox_engine
plugins: anyio-3.7.1
collected 0 items / 1 error
============================================================================================================ ERRORS ============================================================================================================
________________________________________________________________________________________________ ERROR collecting test session _________________________________________________________________________________________________
..\..\.pyenv\pyenv-win\versions\3.11.3\Lib\importlib\__init__.py:126: in import_module
return _bootstrap._gcd_import(name[level:], package, level)
<frozen importlib._bootstrap>:1206: in _gcd_import
???
<frozen importlib._bootstrap>:1178: in _find_and_load
???
<frozen importlib._bootstrap>:1149: in _find_and_load_unlocked
???
<frozen importlib._bootstrap>:690: in _load_unlocked
???
venv\Lib\site-packages\_pytest\assertion\rewrite.py:170: in exec_module
exec(co, module.__dict__)
test\e2e\conftest.py:5: in <module>
from run import generate_app
E ModuleNotFoundError: No module named 'run'
=================================================================================================== short test summary info ====================================================================================================
ERROR - ModuleNotFoundError: No module named 'run'
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
======================================================================================================= 1 error in 0.26s =======================================================================================================
@takana-v レビューありがとうございます!!!
pythonはデフォルトで実行ディレクトリをPYTHONPATHに追加しないので 実行ディレクトリをPYTHONPATHに追加する方法として、pyproject.tomlにpythonpathを追加する方法がありそうなのですが、なんかうまく動きませんでした。。 python -m pytest だとpythonの仕様?で自動的に実行ディレクトリがimport対象のパスに追加されるらしいので、とりあえずこの方法をリードミーで案内してみました・・・! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTMです!
マージします!
(気づかずお遅くなってしまってすみません...!)
内容
e2eテストのTestClientインスタンスをfixtureにしてみました。
fixtureにする利点はいくつかあります。
後々製品版のコアを使うようにする時などに外部から製品版コアのパスを指定しないといけないのですが、fixtureを使えばpytestに乗っかる形になり、コマンドからオプションを渡すのが便利だったりします。
他にもテスト内の全てのセッションでインスタンスを1つだけ作るのか、テストごとにインスタンスを作成するのかなどを分けたりすることもできるようになるので便利だったりします。
関連 Issue
スクリーンショット・動画など
その他