2014-03-19 26 views
0

我正在爲驗收測試目的運行一系列django網站的硒功能測試。我注意到,當我運行這些和異常發生時,我得到整個頁面(例如HTTP狀態500)。如何在驗收測試中存儲/處理django異常網頁

我正在接受利用一個簡單的循環測試,並使用django的ORM輸出的HTML存儲到DB:

def my_functional_tests(request): 

    import requests 
    from mytests.models import Entry  


    for i in range(3):  


     p1 = { ....... } 
     r1 = requests.post('http://127.0.0.1:8000/testfunction1/',data=p1)  

     ..............  

     entry = Entry(output1 = r1.text, output2 = r2.text, output3 = r3.text) 
     entry.save()  

    return HttpResponse("completed") 

我的模型被定義爲(其中的輸出是3次功能測試的HTML結果):

class Entry(models.Model):  

    output1 = models.CharField(max_length=240) 
    output2 = models.CharField(max_length=240) 
    output3 = models.CharField(max_length=240) 

當我得到一個錯誤,將導致約65K網頁導致對儲蓄異常,並且打破了測試。我想獲得儘可能多的信息,所以我可以增加max_length來讓70,000存儲整個頁面,但是有沒有更簡潔的方法來捕獲和存儲相關數據,包括特定的錯誤到db?

回答

1

如果你使用Django的測試客戶端來做這件事,你可以得到更簡潔的信息 - 但通過使用請求,你真的會像網頁瀏覽器那樣擊中你的頁面,所以整個頁面就是你得到的(但是65K對於500錯誤頁面?哇)。

您是否可以在錯誤頁面中嵌入標記和簡明解釋的HTML註釋?

<html> 
    <h1>Error</h1> 
    ... 64k of stuff follows ... 
    <!-- ERR:"info about error" -->  
    </html> 

這樣,您可以解析該錯誤代碼的結果並存儲它。

當然,您需要確保不要在該錯誤消息中放置任何保密信息,或者如果您確實要求只在處於DEBUG模式時或者請求來自本地主機時才發出它,作爲工作人員,或任何其他安全限制將起作用。

稍微漂亮一點的是編寫一箇中間件,它發出錯誤信息作爲HTTP頭;那麼你的頁面可以保持不變,你可以看看你的錯誤信息的響應標題。