如何在Coded UI中设置测试名称?

时间:2014-02-21 00:11:42

标签: visual-studio-2012 coded-ui-tests

我有一个名为myTestMethod的数据驱动CodedUI测试方法,它使用XML提供输入数据。

对于数据集上的每次运行,CodedUI在Test Explorer中报告类似的内容:

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

3 个答案:

答案 0 :(得分: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

希望它有所帮助,

答案 1 :(得分:0)

我不想说这是不可能的,但是在编译时填充了测试资源管理器,并且数据将在运行时被提取。

答案 2 :(得分:0)

我不认为这是可能的。唯一的方法是读取生成的“TRX”文件(因为它是xml)并通过读取csvs替换值。可能需要做一个工具,但开销很大。