结合编码的UI测试HTML日志?

时间:2013-06-06 17:51:02

标签: c# html .net visual-studio-2012 coded-ui-tests

在Visual Studio 2012中运行我的Coded UI测试后,我希望将测试结果记录到HTML文件中。在完成this教程后,我能够实现这一目标。

不幸的是,每个单独的测试都会在..\TestResults\<Test Run Folder>\In\<Individual Test Log Folder>\<PC Name>\UITestActionLog.html获得自己的HTML报告,目前我有3个不同的单独测试,每个测试都在..\TestResults\<Test Run Folder>\In\

获取自己的文件夹

每个生成的HTML文件如下所示:

enter image description here

我想要的是将所有3个HTML文件组合成一个,而不仅仅是

  

&GT;测试1

就像

  

&gt;测试1

     

&gt;测试2

     

&gt;测试3

有没有办法通过一些配置选项自动执行此操作,还是我自己编写程序来合并所有HTML文件?

2 个答案:

答案 0 :(得分:3)

我自己想出了一个解决方案,编写了一个程序,从每个HTML日志中获取<div class="g">个节点,并将它们组合成一个HTML文件。像魅力一样。

答案 1 :(得分:2)

我也写了自己的解决方案。 花了一个小时使用HTML敏捷包后,发现它有时会破坏HTML5嵌入式图像,例如“&GT;,&LT;”。

我只是编写了一个解析htmls的控制台应用程序,并将其合并为1:

cmd ActionLogBuilder inputfile's.html outputfile.html

(它非常原始,但有效)

static void Main(string[] args)
{
    bool only2 = false;
    StringBuilder outputFile = new StringBuilder();
    if (args.Length == 2)
    {             
        try
        {
            System.IO.File.Delete(args[1]);
        }
        catch
        {
            Console.WriteLine("No file to delete");
        }

        System.IO.File.Move(args[0], args[1]);
        only2 = true;               
    }
    int endArg = args.Length;
    Console.WriteLine(endArg.ToString());
    int c = 0;                  
    if(!only2)
    {
        foreach (string a in args)
        {
            if (c == (endArg - 1))
            {
                System.IO.TextWriter w = new System.IO.StreamWriter(a);
                w.Write(outputFile);
                w.Flush();
                w.Close();
                break;
            }
            else
            {
                if (c == 0)
                {
                    using (StreamReader sr = new StreamReader(a))
                    {
                        while (sr.Peek() >= 0)
                        {
                            string grabLine = sr.ReadLine();
                            if (grabLine.Contains("<div class=\"test-name\">Coded UI Test Log</div>"))
                            {
                                outputFile.AppendLine("<div class=\"test-name\">Test " + (c + 1).ToString() + "</div>");
                            }
                            else
                            {
                                if (!grabLine.Contains("</body>") | !grabLine.Contains("</html>"))
                                {
                                    outputFile.AppendLine(grabLine);
                                }
                            }
                        }
                    }
                }
                if (c != 0 && c != (endArg - 2))
                {
                    bool notYet = false;
                    using (StreamReader sr = new StreamReader(a))
                    {
                        while (sr.Peek() >= 0)
                        {
                            string grabLine = sr.ReadLine();


                            if (grabLine.Contains("<body>"))
                            {
                                notYet = true;
                            }
                            if (grabLine.Contains("<div class=\"test-name\">Coded UI Test Log</div>"))
                            {
                                outputFile.AppendLine("<div class=\"test-name\">Test " + (c + 1).ToString() + "</div>");
                            }
                            else
                            {
                                if (notYet)
                                {
                                    if (!grabLine.Contains("</body>") | !grabLine.Contains("</html>"))
                                    {
                                        outputFile.AppendLine(grabLine);
                                    }
                                }
                            }
                        }
                    }
                }
                if (c == (endArg - 2))
                {
                    bool notYet = false;
                    using (StreamReader sr = new StreamReader(a))
                    {
                        while (sr.Peek() >= 0)
                        {
                            string grabLine = sr.ReadLine();
                            if (grabLine.Contains("<body>"))
                            {
                                notYet = true;
                            }
                            if (notYet)
                            {
                                if (grabLine.Contains("<div class=\"test-name\">Coded UI Test Log</div>"))
                                {
                                    outputFile.AppendLine("<div class=\"test-name\">Test " + (c + 1).ToString() + "</div>");
                                }
                                else
                                {
                                    outputFile.AppendLine(grabLine);
                                }
                            }
                        }
                    }
                }
            }
            c++;
        }
    }
}