バックグラウンド:
Django アプリの最初の Selenium 駆動統合テストをセットアップしようとしています。次の簡単なコードを開発しました。
from django.test import LiveServerTestCase
from selenium.webdriver.firefox.webdriver import WebDriver
from selenium.webdriver.common.keys import Keys
class DynamicFormsIntegrationTest(LiveServerTestCase):
@classmethod
def setUpClass(cls):
cls.selenium = WebDriver()
cls.selenium.implicitly_wait(3)
super(DynamicFormsIntegrationTest, cls).setUpClass()
@classmethod
def tearDownClass(cls):
super(DynamicFormsIntegrationTest, cls).tearDownClass()
cls.selenium.quit()
def test_basic(self):
""" Uses get to open application page """
self.selenium.get(self.live_server_url + '/woc/')
#Force Test Fail
self.fail("FAIL")
ここで、次のコマンドを使用してこのテストを実行すると:
python manage.py test test2
次の出力が得られます。
python manage.py test test2^JCreating test database for alias 'default'...
<QueryDict: {}>
F
======================================================================
FAIL: test_basic (test2.tests.test_forms.DynamicFormsIntegrationTest)
Adds a single set via Jquery/Javascript, Submits, and verifies it was rendered and added to Model.Sets
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/usr/path/to/app/test2/tests/test_forms.py", line 42, in test_basic
self.fail("FAIL")
AssertionError: FAIL
----------------------------------------------------------------------
Ran 1 test in 8.901s
FAILED (failures=1)
Destroying test database for alias 'default'...
そして、通常のセットアップを実行すると、次のようになります。
python manage.py runserver
ページ要求時に次の出力が得られます。
python manage.py runserver
Validating models...
0 errors found
September 01, 2013 - 14:42:34
Django version 1.5.1, using settings 'app.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
<QueryDict: {}>
[01/Sep/2013 14:42:39] "GET /test2/ HTTP/1.1" 200 9372
ご覧のとおり、テストの実行時に Web ページが認識されません (& 開発環境の要求で正しく行われるように、「GET」要求は実際には行われません)。実際、「GET」の失敗は、アプリケーションが LiveServerTestCase によって正しくセットアップされていないという問題の単なる指標であると考えています。
質問:
LiveServerTestCase がページの URL を認識しないのはなぜですか? また、この問題を解決するにはどうすればよいですか?