2011-03-14 36 views
1

我需要一些編碼web測試的幫助。創建一個webtest來測試登錄的問題

我創建了一個編碼的Web測試,以查看有多少個帳戶可以登錄到我的應用程序。我有很多賬戶(2000+),我需要知道哪些賬戶是有效的。基本上,我記錄了一個網絡測試,它會記錄一個URL並搜索登錄後出現在頁面中的某些文本。然後,我創建了一個包含所有帳戶名稱和密碼的xml文件,並將其設置爲憑據數據源。然後修改testrun.testrunco​​nfig以指定「每個數據源行一次測試」,以便爲xml文件中的每一行運行測試。
之後,我將測試轉換爲「編碼」網絡測試。到現在爲止還挺好。 當我嘗試創建文件(以編程方式將成功登錄添加到文件中)時出現問題。我有一個私人聲明的StreamWriter,並嘗試在測試構造函數中初始化它,但是這會引發一個錯誤:「無法在代理上運行webtest xxx yyy:調用的目標引發異常」。 我試圖初始化它聲明在同一行中的流,但我得到了相同的結果。

有沒有人有任何想法我如何才能完成所需的測試? 我知道我可以在沒有編碼的Web測試的情況下完成這項工作,但爲了收集成功的登錄信息,我必須在測試結果中逐行進行,看看通過了哪些信息。 如果有人有更好的主意,非常歡迎!

問候
貝託

回答

0

你當然可以達到你的要求,因爲我也實施了類似的測試。

代碼中必須存在導致該異常在運行時出錯的錯誤。

而不是使用控制器/代理綁定,請嘗試先在本地運行測試,以便您可能會得到比通用「無法運行webtest」更好的錯誤消息。

另外,如果您發佈代碼,也許有人可能會發現錯誤。

0

我會按照agentnega的建議在本地運行測試,以獲得更爲清晰的錯誤消息。也許文件路徑有問題。

除此之外,我會保持測試記錄,而不是將其轉換爲編碼。 我會設置一個上下文變量到文件的路徑,該文件將在最後成功登錄,最好是相對於測試部署目錄。 然後編寫一個派生自WebTestRequestPlugin的請求插件類,並以類似於以下的方式覆蓋PostRequest()方法:

public override void PostRequest(object sender, PostRequestEventArgs e) 
{ 
    if(Outcome.Pass == e.Request.Outcome) 
    { 
     string path = Path.Combine(e.WebTest.Context["$TestDeploymentDir"].ToString(), e.WebTest.Context["logins.txt"].ToString()); 

     StreamWriter sw = null; 
     if (!File.Exists(path)) 
     { 
      sw = File.CreateText(path); 
     } 
     else 
     { 
      sw = File.AppendText(path); 
     } 
     sw.WriteLine(e.WebTest.Context["Username"]); 
    } 
}