2014-02-21 30 views
1

我有一個名爲myTestMethod的數據驅動CodedUI測試方法,它使用XML來提供輸入數據。如何在CodedUI中設置TestName?

對於每對數據集運行,CodedUI報告中測試瀏覽器是這樣的:

Test Passed - myTestMethod (Data Row 0) 
Test Passed - myTestMethod (Data Row 1) 
Test Failed - myTestMethod (Data Row 2) <error details> 
Test Failed - myTestMethod (Data Row 3) <error details> 

我想知道是否有一種方法來設置測試名稱從更多的東西識別(可能輸入數據集本身)。

似乎CodedUI使用TestContext.TestName作爲此報告目的,但它是隻讀屬性。不知何故,有沒有辦法將它設置在別的地方?

請幫忙。 謝謝, Harit

回答

1

好吧,我明白你現在。我其實有一門課,我寫一般的功能。其中之一是爲了保存我想要的測試結果。

我使用基於XML驅動的數據。那麼我的Employe1和Employe2就是同一個test_method的不同運行。

只需找到[TestCleanup()]並在這裏調用一個函數來保存你需要的日誌。

日誌可以保存爲csv格式,純文本分隔;例如使用StreamWriter。

namespace NAME_SPACE 
{ 

[CodedUITest] 
public class Program_Something_BlaBla 
{ 
    Stopwatch stopWatch = new Stopwatch(); 

    [TestMethod(), Timeout(999999999)] 
    [DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", PATH_XML, "DATOS", DataAccessMethod.Sequential)] 


    public void Program_Something_BlaBla_Method() 
    { 

    string employe = TestContext.DataRow["EMPLOYE"].ToString(); 

     try 
     { 
      //Test actions 
      ... 

     { 
     catch (Exception g) 
     { 
      ... 
      return; 

     } 
    } 

    #region Additional test attributes 
    // You can use the following additional attributes as you write your tests: 

    ////Use TestInitialize to run code before running each test 
    [TestInitialize()] 
    public void MyTestInitialize() 
    { 
     stopWatch.Start(); 
      ... 
    } 

    //Use TestCleanup to run code after each test has run 
    [TestCleanup()] 
    public void MyTestCleanup() 
    { 
     stopWatch.Stop(); 
     ... 
     Common.EndTest(employe); 

    } 

    #endregion 

希望它能幫助,

+0

我覺得你誤解了我。我需要根據數據報告每個測試運行的測試名稱報告。例如,如果我的testmethod被命名爲Program_Something_BlaBla_Method,並且測試數據代表Employee1和Employee2的數據,則需要在測試資源管理器中報告如下所示的內容:Program_Something_BlaBla_Method_Employee1和Program_Something_BlaBla_Method_2 –

0

我不想說這是不可能的,但在編譯時的測試資源管理器在人口密集和數據將在運行時拉入。

0

我不認爲這是可能的。唯一的辦法是讀取生成的「TRX」文件(因爲它是xml)並通過讀取csvs來替換值。可能需要做一個工具,但開銷很大。