XUnit 테스트 자습서: XUnit에서 첫 번째 스크립트 실행

이전 xUnit 테스트 튜토리얼 시리즈 블로그에서 xUnit를 설정하는 방법을 알았습니다.net 프레임(xUnit라고도 함)은 Visual Studio 2019(VS 2019)에 있습니다.오늘날 Dell의 핵심은 C#을 사용하여 Selenium 테스트를 자동화하는 것입니다.따라서 Selenium WebDriver를 설치해야 합니다.
어떤 테스트 프레임워크를 사용하든지 간에 Selenium 테스트는 로컬 Selenium 격자 및 원격 또는 구름 기반 Selenium 격자에서 실행할 수 있습니다.본 xUnit 테스트 강좌에서 소개한 테스트 용례는 로컬 Selenium 격자에서 실행된다. 즉, 목표 웹 브라우저, 브라우저에 대응하는Selenium WebDriver, Selenium 테스트 프레임워크 등이 테스트를 촉발하는 기계에 존재한다.

개시하다


각 웹 브라우저에는 해당 WebDriver가 있으며, Selenium API를 사용하여 브라우저를 호출하기 전에 드라이버를 설치해야 합니다.xUnit 테스트 프레임 설정의 경우 대상 웹 페이지에 사용할 예제가 Chrome 브라우저에서 열립니다.따라서 Chrome WebDriver xUnit가 있는 기계에 설치해야 한다.net 및 Selenium 테스트 자동화 프레임워크가 설치되었습니다.
다음은 Chrome, Firefox, Internet Explorer, Microsoft Edge, Safari 등의 인기 브라우저에 대한 Selenium 드라이버를 다운로드할 위치입니다.
브라우저
다운로드 위치
오페라 하우스
https://github.com/operasoftware/operachromiumdriver/releases
불여우
https://github.com/mozilla/geckodriver/releases
크롬
http://chromedriver.chromium.org/downloads
Internet Explorer
https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver
Microsoft 에지
https://blogs.windows.com/msedgedev/2015/07/23/bringing-automated-testing-to-microsoft-edge-through-webdriver/
이 xUnit 테스트 자습서에서는 Chrome 브라우저를 사용하여 테스트를 수행합니다.위의 위치에서 Selenium WebDriver for Chrome을 다운로드하여 Chrome 브라우저(즉 Chrome.exe)가 설치된 디렉토리에 설치합니다.

위에서 설명한 설치 절차를 따르는 경우 코어에서 브라우저를 호출할 때 Chrome WebDriver 위치를 지정할 필요가 없습니다.

C#, xUnit 및 Selenium WebDriver 프레젠테이션


Selenium WebDriver와 C#와 xUnit 테스트 프레임워크의 결합 사용을 보여주기 위해 아래의 테스트 장면을 살펴보자-
  • 이 URL-https://lambdatest.github.io/sample-todo-app/로 이동합니다.
  • 처음 두 확인란을 선택합니다.
  • 현재 아래 텍스트 상자에 '목록에 항목 추가' 를 보냅니다. id=sampletodotext.
  • 마지막으로 추가 단추를 누르면 텍스트가 추가되었는지 확인합니다.
  • 구현


    using Xunit;
    using System;
    using OpenQA.Selenium;
    using OpenQA.Selenium.Chrome;
    
    namespace xUnit_Test_Cross_Browser
    {
        public class UnitTest
        {
            String test_url = "https://lambdatest.github.io/sample-todo-app/";
            String itemName = "Yey, Let's add it to list";
    
            [Fact]
            public void NavigateToDoApp()
            {
                IWebDriver driver;
    
                driver = new ChromeDriver();
                driver.Navigate().GoToUrl(test_url);
                driver.Manage().Window.Maximize();
    
                Assert.Equal("Sample page - lambdatest.com", driver.Title);
                // Click on First Check box
                IWebElement firstCheckBox = driver.FindElement(By.Name("li1"));
                firstCheckBox.Click();
    
                // Click on Second Check box
                IWebElement secondCheckBox = driver.FindElement(By.Name("li2"));
                secondCheckBox.Click();
    
                // Enter Item name
                IWebElement textfield = driver.FindElement(By.Id("sampletodotext"));
                textfield.SendKeys(itemName);
    
                // Click on Add button
                IWebElement addButton = driver.FindElement(By.Id("addbutton"));
                addButton.Click();
    
                // Verified Added Item name
                IWebElement itemtext = driver.FindElement(By.XPath("/html/body/div/div/div/ul/li[6]/span"));
                String getText = itemtext.Text;
                Assert.True(itemName.Contains(getText));
    
                /* Perform wait to check the output */
                //System.Threading.Thread.Sleep(4000);
    
                Console.WriteLine("LT_ToDo_Test Passed");
    
                driver.Quit();
            }
        }
    }
    

    코드 연습


    첫 번째 단계는 다른 어떤 테스트 프레임워크와 마찬가지로 실제 테스트를 시작하기 전에 필요한 가방을 포함한다.xUnit, Selenium 및 Chrome WebDriver가 포함됩니다.
    using Xunit;
    using System;
    using OpenQA.Selenium;
    using OpenQA.Selenium.Chrome;
    ……………………………………………………………………………..
    ……………………………………………………………………………..
    
    2단계 – API가 입력 매개변수를 수용하지 않는 비패라메트릭 테스트이므로 [Fact] 속성을 사용하여 테스트 실행 프로그램이 실행되는 테스트 방법을 설명합니다.이 예에서 사용하는 테스트 방법은 NavigateToDoApp()입니다.
    [Fact]
    public void NavigateToDoApp()
    {
        IWebDriver driver;
    
        driver = new ChromeDriver();
        ……………………………………
        ……………………………………
    
    3단계 – IWebDriver는 사용자가 웹 브라우저를 제어하는 인터페이스로 사용됩니다.명령driver = new ChromeDriver()을 사용하여 Chrome 브라우저의 새 인스턴스를 만듭니다.
    테스트 URL은 https://lambdatest.github.io/sample-todo-app/이고 driver.Navigate().GoToUrl(test_url) 설정을 사용합니다.Selenium API Manage()를 호출하여 브라우저 창을 최대화합니다.창문.최대화().
    public void NavigateToDoApp()
    {
        IWebDriver driver;
    
        // Local Selenium WebDriver
        driver = new ChromeDriver();
        driver.Manage().Window.Maximize();
        driver.Navigate().GoToUrl(test_url);
    
        driver.Manage().Window.Maximize();
    
    4단계 – 자동화 테스트를 수행하는 요소에 대해 웹 포지셔닝 머신(예를 들어 이름, ID, XPath 등)을 사용해야 합니다. Chrome 브라우저의 Inspect 도구는 웹 요소에 대한 상세한 정보를 얻는 데 사용됩니다.아래 화면 캡처와 같이 요소'li1'은 이름 웹locator를 사용하여 위치를 정합니다.우리도 같은 방법으로 다른 li2, li3이라는 웹 요소를 포지셔닝한다.다른 요소는 이러한 요소의 Id를 사용하여 배치됩니다.

    이러한 웹 요소에 대한 자세한 정보를 얻으면 적절한 Selenium 명령을 사용하여 웹 요소에 대한 작업을 수행합니다.
    [Fact]
    public void NavigateToDoApp()
    {
        IWebDriver driver;
    
        ...............................................................
        ...............................................................
        ...............................................................
    
        // Click on First Check box
        IWebElement firstCheckBox = driver.FindElement(By.Name("li1"));
        firstCheckBox.Click();
    
        // Click on Second Check box
        IWebElement secondCheckBox = driver.FindElement(By.Name("li2"));
        secondCheckBox.Click();
    
        // Enter Item name
        IWebElement textfield = driver.FindElement(By.Id("sampletodotext"));
        textfield.SendKeys(itemName);
        ...............................................................
        ...............................................................
        ...............................................................
    }
    
    FindElement 명령은 웹 페이지의 웹 요소를 식별하는 데 사용됩니다.모든 웹 요소를 찾으면 웹 요소에 대한 적절한 동작을 수행합니다. 즉, 특정한 체크 상자를 선택하고, 키를 보내서 텍스트나 텍스트 상자를 입력하는 등입니다.
    // Click on Second Check box
    IWebElement secondCheckBox = driver.FindElement(By.Name("li2"));
    secondCheckBox.Click();
    
    // Enter Item name
    IWebElement textfield = driver.FindElement(By.Id("sampletodotext"));
    textfield.SendKeys(itemName);
    
    5단계 - 새 항목 (예, 목록에 추가하겠습니다) 도 목록에 추가됩니다.새로 추가한 항목의 내용이 테스트 코드에 제공된 텍스트와 일치하지 않으면 Assert가 발생합니다.
    [Fact]
    public void NavigateToDoApp()
    {
        ..........................................................................  ..........................................................................  ..........................................................................  // Verified Added Item name
        IWebElement itemtext = driver.FindElement(By.XPath("/html/body/div/div/div/ul/li[6]/span"));
        String getText = itemtext.Text;
        Assert.IsTrue(itemName.Contains(getText));
    
    테스트가 완료되면 Quit 명령(driver.Quit)을 호출하여 WebDriver 세션을 종료하고 Chrome WebDriver에서 사용하는 리소스를 방출합니다.
    [Fact]
    public void NavigateToDoApp()
    {
        ..........................................................................  ..........................................................................  ..........................................................................  
    
        Console.WriteLine("LT_ToDo_Test Passed");
    
        driver.Quit();
    }
    

    실행


    NavigateToDoApp 테스트 용례를 실행하려면 테스트로 이동하여 Run All Tests를 누릅니다.

    테스트 실행 진도는 테스트 자원 관리자 창에서 볼 수 있습니다.테스트 리소스 매니저 창을 열려면 보기 -> 테스트 리소스 매니저로 이동합니다.

    테스트 용례의 녹색 체크 표시, 즉 NavigateToDoApp은 실행 상태를 나타낸다.스냅샷을 실행한 것처럼 테스트가 성공적으로 수행되었습니다.

    다음은 Chrome 브라우저에서 수행된 테스트 용례입니다.

    결론



    이 xUnit 테스트 강좌에서 우리는 Selenium test automation C# & xUnit 테스트 프레임워크를 어떻게 사용하는지 이해했다.xUnit 테스트 튜토리얼의 일부로 시연된 ToDoApp 테스트의 실현을 철저히 이해하는 것이 중요하다.C#, Selenium 및 xUnit을 사용하여 더욱 복잡한 테스트를 수행할 수 있는 기반을 마련했습니다.net(또는 xUnit) 테스트 프레임워크이 xUnit 테스트 강좌 시리즈에서, 우리는 곧 더 많은 재미있는 블로그로 돌아갈 것이다.기대하세요.
    그때까지 즐거운 테스트!

    좋은 웹페이지 즐겨찾기