2015-04-08 53 views
1

在發佈到我的燒瓶應用程序的url上的不同輸入值中,閃爍不同的消息,例如, '沒有輸入數據','輸入無效','找不到記錄','找到3條記錄'。在燒瓶應用程序前端測試中檢查Flash消息

有人可以指導我如何寫鼻子測試來檢查是否顯示正確的閃光信息?我猜閃光消息首先到達會話......我們如何在鼻子測試中檢查會話變量?

謝謝

回答

3

下面是一個示例測試,聲明預期的Flash消息存在。它是基於該方法described here

def test_should_flash_warning_message_when_no_record_found(self): 
    # Arrange 
    client = app.test_client() 

    # Assume 
    url = '/records/' 
    expected_flash_message = 'no record found' 

    # Act 
    response = client.get(url) 
    with client.session_transaction() as session: 
     flash_message = dict(session['_flashes']).get('warning') 

    # Assert 
    self.assertEqual(response.status_code, 200, response.data) 
    self.assertIsNotNone(flash_message, session['_flashes']) 
    self.assertEqual(flash_message, expected_flash_message) 

注:session['_flashes']將是一個元組列表。事情是這樣的:

[(u'warning', u'no records'), (u'foo', u'Another flash message.')] 
0

檢測與閃亮會話[「_閃爍」]的方法,並沒有爲我工作,因爲會話對象根本沒有「_flashes」屬性在我的情況:

with client.session_transaction() as session: 
    flash_message = dict(session['_flashes']).get('warning') 

KeyError: '_flashes'

這可能是因爲最近的燒瓶中,我使用Python 3.6.4可以使用不同的工作,其他包的版本,我真的不知道......

對我來說簡單明瞭:

def test_flash(self): 
    # attempt login with wrong credentials 
    response = self.client.post('/authenticate/', data={ 
     'email': '[email protected]', 
     'password': '1234' 
    }, follow_redirects=True) 
    self.assertTrue(re.search('Invalid username or password', 
        response.get_data(as_text=True))) 

在我的情況下,閃光消息是'無效的用戶名或密碼'。

我認爲它也比較容易閱讀。希望它能幫助那些遇到類似問題的人