2015-07-21 53 views
2

我正在嘗試爲用戶在訪問某些url之前不需要登錄的項目創建功能測試。我通過創建預先認證的會話來欺騙網站,使其認爲測試用戶已經登錄。在django/selenium中創建預認證會話Web測試

我加載了一個虛擬url的webdriver實例,在dbase中創建一個虛擬用戶,設置了會議在後端,然後添加會話cookie到網絡驅動程序如下: -

from django.utils.importlib import import_module  

def load_dummy_url(self): 
    driver.get(self.live_server_url + '/404-not-found') 

def create_session_store(): 
    engine = import_module(settings.SESSION_ENGINE) 
    store = engine.SessionStore() 
    store.save() 
    return store 

def pre_create_login(): 
    user = get_user_model().objeects.create_user(email='[email protected]', first_name='user1', password='pass1') 
    session_store = create_session_store() 
    session_store[SESSION_KEY] = user.pk 
    session_store.save() 

    return session_store.session_key 

def add_cookie_to_browser(): 
    driver.add_cookie(dict(name=settings.SESSION_COOKIE_NAME, value= pre_create_login())) 

然而,加載需要用戶身份驗證的另一個網址仍然重定向到登錄頁面的請求包含AnonymousUser作爲試驗場不認爲用戶已登錄。

有沒有什麼我在這裏做錯了?

注意:上面的代碼片段沒有遵循好的編碼模式。它只是一個確切代碼的簡單複製品。

回答

1

我在Selenium測試驗證​​請求時遇到同樣的問題。 解決方法是:

創建一個新的自定義URL/selenium/user_login /並編寫一個視圖,這將使用戶登錄。現在在每個硒測試用例中調用此URL並重定向到您的url想要測試。

+0

Tanx很多。這一定會奏效。 –