ryoko hayashi/ 2024年 1月 25日/ 技術

こんにちは!林です。
弊社では一部プロジェクトにPlaywrightでの自動テストを採用しているのですが
Playwrightの自動テストにファイルアップロードのテストを追加し、
DockerでPlaywrightの自動テストを実行した際に、エラーとなった原因と解決方法をご紹介したいと思います。

Playwrightでファイルアップロードする方法

まずは、ファイルアップロードする方法から。
対象画面にファイル選択ダイアログを表示する「選択」ボタンが用意されています。

    with page.expect_file_chooser() as fc_info:
        # 画面上のファイル選択ボタンを押下
        page.get_by_text("選択", exact=True).click()
        # 表示されたファイル選択ダイアログでファイルを選択
        file_chooser = fc_info.value
        file_chooser.set_files("tests/file/file_import_test.csv")

これで、ファイル選択ダイアログを表示し、ダイアログで「開く」を押下した状態になります。

ファイル選択ダイアログでファイル選択した後は、
そのファイルを読み込んで内容をDBに登録するなどしています。

Dockerで実行するとエラーになる

ローカル環境で実行している際は問題なく動いていたのですが、
Docker上で同じ処理を動かすとエラーになりました。

原因は、local_settings.pyの設定漏れ。

settings.pyの最後でlocal_settings.pyを読み込む作りになっているのですが
local_settings.pyに定義されている「PYTHONPATH」がDocker用のパスになっていなかったため
Docker上でPYTHONPATHが見つからず、エラーとなっていました。

local_settings.pyにPYTHONPATHを設定し、Docker上でも
ファイルアップロードテストが正常に動作するようになりました。

About ryoko hayashi

Javaや.NETのWebシステム開発に長く携わってきたのですが、 最近はPythonがほとんど。 数年前にデビューしたC言語はすっかり化石となりました。