2013-12-16 16 views
14

私は現在、バックグラウンドで実行されている開発環境のインスタンスからセレンベースのテストをバウンスするのではなくLiveServerTestCaseを使用するDjango機能テストを、私は壁に当たった。 sudo netstat -netp | grep 8081は何ももたらさない考慮、DjangoのLiveServerTestCaseは、アドレスが矛盾しているために常に失敗する...フリーアドレスが表示されているにもかかわらず

====================================================================== 
ERROR: setUpClass (fun_tests.tests.backend.TestCmsLogin) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/home/user/Documents/env/local/lib/python2.7/site-packages/django/test/testcases.py", line 1187, in setUpClass 
    raise cls.server_thread.error 
error: [Errno 98] Address already in use 

スーパー楽しい:私はLiveServerTestCaseテストを実行しようとするたびに、私は次のエラーを取得します。いくつかの背景:私はDjango 1.6を使用していますが、私は鼻、django-nose、nose-excludeを使用していましたが、問題を診断するために効果的に切り刻んでいます。私は、件名に任意の先行技術を見つけることができません

from django.test import LiveServerTestCase 
class TestCmsLogin(LiveServerTestCase): 
    def test_a_test_itself(self): 
     self.assertTrue(True) 

、およびDjangoprojectのバグトラッカーがきれいです:私が使用しているコードはabysmally簡単です。私は何が欠けていますか?

編集:今日の問題は、ポート8081にフラグを立てていても問題が発生していないため、この問題は再現できません。

edit2:私の書き込みでは、8081として8081が誤って入力されていました。

+1

chromedriverを使用している場合、デフォルトのポートは 'pkillはchromedriver'作品(Linux)の、8081 – iMom0

答えて

12

あなたが試みられるポートの複数の範囲を含めること(settings.pyに)環境変数DJANGO_LIVE_TEST_SERVER_ADDRESSを設定することができます。

os.environ['DJANGO_LIVE_TEST_SERVER_ADDRESS']="localhost:8000-8010,8080,9200-9300" 

は多分これが誰かを助け、同じ問題を自分で持っていましたでる。

13

これは、前のテストで内部的なサーバーエラーが発生した後で、後続のテストを実行するときに起きたことです。 Macでは、lsofを使用してポートを使用しているプログラムを見つけ、それを強制終了します。例:

$ sudo lsof -i :8081 
COMMAND PID USER FD TYPE   DEVICE SIZE/OFF NODE NAME 
firefox-b 1097 username 3u IPv4 0x94495559c6dea35  0t0 TCP localhost:sunproxyadmin (LISTEN) 

$ kill -9 1097 
+1

ある –

3

環境変数DJANGO_LIVE_TEST_SERVER_ADDRESSが設定されていない場合、ライブテストサーバーを開始するためのデフォルトアドレスはlocalhost:8081です。 LiveServerTestCase srcコードを参照してください。 OSとして

# Launch the live server's thread 
    specified_address = os.environ.get(
     'DJANGO_LIVE_TEST_SERVER_ADDRESS', 'localhost:8081') 

使用中のポート8081文句ているようです。以下のようなテストを実行することで、別のポート(たとえば9000)をすばやく選択することができます。

/manage.py test functional_tests --liveserver :9000 

ただし、明示的にDJANGO_LIVE_TEST_SERVER_ADDRESSを設定することは理想的です。あなたは一つのファイルに

テストテストケースを分離するつもりなら

export DJANGO_LIVE_TEST_SERVER_ADDRESS="localhost:9000" 
0
は、あなたのティアダウンの方法を変更し

複数のファイルに.close()方法

def tearDown(self): 
    self.browser.close() 

テストを使用しても大丈夫です起動が必要になります新しいスレッド。

def tearDown(self): 
    self.browser.quit() 
+0

それは良い答えかもしれないようにこれはそうですが、あなたはそれを展開する必要があり、また、コードとして書式コード(それを選択して{アイコン}をクリックします)。 – blm

関連する問題