WatiN:如何使用自动化测试运行结果,因为我无法获得报告测试运行结果的方法

时间:2011-10-07 09:19:37

标签: c# watin automated-tests

我已经使用WATIN自动化模块,现在我希望测试结果显示为PASS / FAIL状态等(报告),Watin中是否有任何功能可以执行我所需的操作。

就像我有像

这样的代码
    public static void TestSelectPatientLink()

    {

        try

        {

            Link lnkSelectPatientb = ie.Link(Find.ByTitle("Search patient"));
            lnkSelectPatientb.Blur();
            lnkSelectPatientb.ClickNoWait();

        }

        catch (Exception ex)

        {

            Console.WriteLine(ex.ToString());

        }

    }

如何在VS 2010中运行此代码时发生的报告,是失败还是通过,如果失败,错误等,如何报告这些内容。

**仅供我使用Nunit和WatiN

3 个答案:

答案 0 :(得分:2)

不,WatiN没有内置任何支持此功能的功能,但GarethStephenson的帖子是正确的。你可以写一个NUnit测试,它会给你一个通过/失败。

首先,要让IE与NUnit一起使用,您需要将以下内容添加到您的app.config

<configSections>
  <sectionGroup name="NUnit">
    <section name="TestRunner" type="System.Configuration.NameValueSectionHandler"/>
  </sectionGroup>
</configSections>

<NUnit>
  <TestRunner>
    <!-- Valid values are STA,MTA. Others ignored. -->
    <add key="ApartmentState" value="STA" />
  </TestRunner>
</NUnit>

这是一个示例测试。它加载谷歌主页,抓取一些元素并断言它们存在: -

using WatiN.Core;
using NUnit.Framework;

namespace ConsoleApplication1
{
    [TestFixture]
    public class AutomatedTests
    {
        [Test]
        public void DoGoogleTest()
        {
            using (IE browser = new IE())
            {
                browser.GoTo("www.google.co.uk");

                Div logoDiv = browser.Div("hplogo");
                Assert.IsTrue(logoDiv.Exists, "Logo div does not exist");

                TextField searchText = browser.TextField("lst-ib");
                Assert.IsTrue(searchText.Exists, "Search text field does not exist");

                Button searchBtn = browser.Button(Find.ByName("btnK"));
                Assert.IsTrue(searchBtn.Exists, "Search button does not exist");

                Button nonExistantButton = browser.Button("garbagegarbagegarbage");
                // This will cause the test to fail because the link doesn't (shouldn't!) exist.
                // Comment it out and the test should pass
                Assert.IsTrue(nonExistantButton.Exists, "Non-existant button does not exist");
            }
        }
    }
}

不幸的是,NUnit不会自动与Visual Studios测试视图/测试列表窗口集成。您的选择是: -

上面的代码给出了结果: -

ConsoleApplication1.AutomatedTests.DoGoogleTest:
  Non-existant button does not exist
  Expected: True
  But was:  False

如果您注释掉最后一行,则不会报告任何错误。

如果您需要更多信息,请告知我们。 HTH!

编辑 为VS2010增加了Visual NUnit扩展程序的链接

答案 1 :(得分:1)

您总是可以使用NUnit等将该方法转换为单元测试方法。

[Test]
public void TestSelectPatientLink()
{
    try
    {
        Link lnkSelectPatientb = ie.Link(Find.ByTitle("Search patient"));
        lnkSelectPatientb.Blur();
        lnkSelectPatientb.ClickNoWait();
    }
    catch (Exception ex)
    {
        // Capture the error screen so you can see what went wrong
        ie.CaptureWebPageToFile("Error.jpg");
        // Fail the test, use the unit testing framework's reporting to get your pass/fail
        Assert.Fail(ex.ToString());
    }
}

答案 2 :(得分:0)

订阅nunit事件(testFinished,testStarted)可能会有所帮助。但这需要为nunit开发插件 BR /维塔利