這裏是我用於使用硒進行端到端測試的代碼片段(我在硒django測試中全新);在django硒測試期間持續登錄
from django.contrib.auth.models import User
from django.contrib.staticfiles.testing import StaticLiveServerTestCase
from selenium.webdriver.chrome.webdriver import WebDriver
class MyTest(StaticLiveServerTestCase):
@classmethod
def setUpClass(cls):
super(DashboardTest, cls).setUpClass()
cls.selenium = WebDriver()
cls.user = User.objects.create_superuser(username=...,
password=...,
email=...)
time.sleep(1)
cls._login()
@classmethod
def _login(cls):
cls.selenium.get(
'%s%s' % (cls.live_server_url, '/admin/login/?next=/'))
...
def test_login(self):
self.selenium.implicitly_wait(10)
self.assertIn(self.username,
self.selenium.find_element_by_class_name("fixtop").text)
def test_go_to_dashboard(self):
query_json, saved_entry = self._create_entry()
self.selenium.get(
'%s%s' % (
self.live_server_url, '/dashboard/%d/' % saved_entry.id))
# assert on displayed values
def self._create_entry():
# create an entry using form and returns it
def test_create(self):
self.maxDiff = None
query_json, saved_entry = self._create_entry()
... assert on displayed values
我注意到,在每次測試之間登錄是不持續的。所以我可以在setUp
中使用_login
,但讓我的測試變慢。
那麼如何在測試之間保持持久登錄呢?測試這些測試(djnago硒測試)的最佳做法是什麼?
謝謝:)我分裂測試對主要應用程序功能,因爲如果我使用大型測試;它會在第一次失敗後退出,我將無法測試我的其他場景。 –
對。這就是爲什麼Selenium測試很脆弱,但我仍然認爲正確的做法是編寫一個具有大量重複action-assertion-action-assertion的函數。如果您想要針對目標功能提供快速反饋,請在沒有Selenium的情況下編寫單元測試。 下面是一個我使用很多的例子:https://github.com/kevinharvey/jmad/blob/test-driven-django-development/jmad/jmad/tests.py#L47 – kevinharvey