私は間違っていたことがわかりました。テストしていると思っていたものをテストしていませんでした...Herokuのルーティングメッシュが別のサーバーにリクエストを送信していたため、LiveServerTestCaseは1台のマシンでWebサーバーを起動し、Seleniumは他のマシンに完全に接続していました。
HerokuProcfileを次のように更新します。
web: python src/manage.py test --liveserver=0.0.0.0:$PORT
DATABASES
テストデータベースを指すように設定をオーバーライドし、以下にリンクされているテストスイートランナーをカスタマイズします(同じ考えが当てはまります:setup_databases
データベース全体ではなく、テーブルのみをドロップ/再作成するようにオーバーライドします)、リモートで実行できましたテスト。しかし、これはさらにハッキー/痛みを伴う/不法です。まだもっと良いものを探しています!混乱してすみません。
(以下の回答を更新)
これが私のために働いたステップです:
- Herokuツールベルトを使用して、追加の無料のPostgresデータベースを作成します
heroku addons:add heroku-postgresql:dev
- ここにあるHerokuTestSuiteRunnerクラスを使用してください。
TEST_DATABASES
このカスタムテストランナーでは、通常の形式に従う設定を定義する必要がありDATABASES
ます。例えば:
TEST_DATABASES = {
'default': dj_database_url.config(env='TEST_DATABASE_URL')
}
次に、TEST_RUNNER
HerokuTestSuiteRunnerが見つかる場所へのPythonパスを設定します。
これで、指定されたデータベースを使用してHerokuでDjangoテストを実行できるようになります。これは非常に簡単なハックです...どのように改善/ハッキングを減らすことができるか教えてください。楽しみ!
(以下の元の回答)
ここでは、いくつかの関連するソリューションについて説明しました。Djangoのドキュメントで読むことができるように、「SQLiteデータベースエンジンを使用する場合、テストはデフォルトでインメモリデータベースを使用します」。
これは、Herokuで使用しているデータベースエンジンを完全にテストするものではありませんが(私はまだそれを行うソリューションを探しています)、データベースエンジンをSQLiteに設定すると、少なくともテストを実行できます。
いくつかのポインタについては、上記のリンクされたStackOverflowの質問を参照してください。少なくとも2つの方法がありif 'test' in sys.argv
ます。データベースエンジンとしてSQLiteを強制する前にテストするか、テストで専用の設定ファイルを使用しdjango manage.py test
て、オプションの使用に渡すことができ--settings
ます。