WatiN: Как использовать результаты автоматического запуска теста, так как я не могу сообщить о результате теста - PullRequest
1 голос
/ 07 октября 2011

Я автоматизировал модуль с помощью 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 ]

2 голосов
/ 13 октября 2011

Нет, в WatiN не встроены какие-либо функциональные возможности для поддержки этого, но пост ГаретСтефенсона был верным. Вы можете написать тест 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>

Вот пример теста. Он загружает главную страницу Google, захватывает некоторые элементы и утверждает, что они существуют: -

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 не интегрируется автоматически с окнами Test Studios Visual View / Test List. Ваши варианты: -

Приведенный выше код дает мне результат: -

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

Если вы закомментируете последнюю строку, вы не получите сообщений об ошибках.

Если вам нужна дополнительная информация, дайте мне знать. НТН!

РЕДАКТИРОВАТЬ Добавлена ​​ссылка для расширения Visual NUnit для VS2010

1 голос
/ 07 октября 2011

Вы всегда можете преобразовать этот метод в метод модульного тестирования, используя 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());
    }
}
0 голосов
/ 16 октября 2011

Подписка на события nunit (testFinished, testStarted) может помочь. Но это требует разработки аддона для nunit бром / Vitalii

...