私は間違っていたことがわかりました。テストしていると思っていたものをテストしていませんでした...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_RUNNERHerokuTestSuiteRunnerが見つかる場所へのPythonパスを設定します。
これで、指定されたデータベースを使用してHerokuでDjangoテストを実行できるようになります。これは非常に簡単なハックです...どのように改善/ハッキングを減らすことができるか教えてください。楽しみ!
(以下の元の回答)
ここでは、いくつかの関連するソリューションについて説明しました。Djangoのドキュメントで読むことができるように、「SQLiteデータベースエンジンを使用する場合、テストはデフォルトでインメモリデータベースを使用します」。
これは、Herokuで使用しているデータベースエンジンを完全にテストするものではありませんが(私はまだそれを行うソリューションを探しています)、データベースエンジンをSQLiteに設定すると、少なくともテストを実行できます。
いくつかのポインタについては、上記のリンクされたStackOverflowの質問を参照してください。少なくとも2つの方法がありif 'test' in sys.argvます。データベースエンジンとしてSQLiteを強制する前にテストするか、テストで専用の設定ファイルを使用しdjango manage.py testて、オプションの使用に渡すことができ--settingsます。