#automatyzacjaC#&NUnit01-Pobranie instalacja Visual Studio 2019, konfiguracja, pierwszy projekt, pierwsze proste testy

Dobra muza, musi być 😀

Hello world!
Dośc istotna informacja(aktualizacja) na temat koronowirusa, proszę przeczytaj – > https://gregkaqa.pl/index.php/koronawirus/
lub bezpośrednio – > https://www.gov.pl/web/koronawirus/wprowadzamy-nowe-zasady-bezpieczenstwa-w-zwiazku-z-koronawirusem
Zrzutka na maski ochronne z drukarki 3D kosz jednej 3 złote – > https://zrzutka.pl/cba7u5

A więc dzisiejszy wpis będzie poświęcony, pisaniu automatów w języku Microsoftu czyli C#. Będzie to relacja C# z frameworkiem NUnit.
Zaczynamy od pobrania jeśli nie posiadacie pakiet Visual Studio 2019.

Z moich poprzednich wpisów możecie kojarzyć Visual Studio Code, tym razem pobieramy opcje numer jeden czyli Visual Studio Community.

Instalacja Visual Studio 2019

Nie wiem czy nie wybrałem za dużo pakietów, mądrzejsza głowa może mi to napisać w komentarzu, ale miejsca na dysku mam także luz 😀
Po lewej od przycisku zainstaluj jest mały wybór instaluj podczas pobierania lub pobierz i dopiero potem zainstaluj, wybierzcie co chcecie.
Bum! Trzeba niestety odpalić Windowsa od nowa
Ja tam skipuje narazie.

Tylko ciemny motyw i zostawiamy ogólne ustawiania środowiska deweloperskiego.

Tworzenie pierwszego projektu

Ja kontynuuje bez kodu.

Wybieramy projekty typu NUnit

Tak wygląda wygenerowany plik przykładowej klasy z testami.

Pobierz chrome driver, najpierw sprawdz jaki masz jak 80 to pobierasz 80 i sprawdzaj dalsze numerki, za nowa przeglądarka względem binarnego driver, się po prostu wywali przy teście.

alt + enter podpowiadanie rozwiązania, aby je zastosować klikamy podgląd zmian
Mamy super informacje co tu nam Visual ogarnie za nas.
Jak to w programowaniu trzeba po napisaniu jakiegoś kodu możemy sobie zbudować solucje.

Tutaj ważny przykład driver przeglądarki pobrałem 81, jak to z rozmachu bywa ten na samej górze, a się okazuje ze chrome mam 80tke i nie ma aktualizacji, wiec 81 chrome to może być kanał beta, trzeba zaniżyć 🙂
Aaaa bardzo wazną rzeczą jak chcecie usunąć stary i podmienić nowym.


Mimo, zamknięcia przeglądarki i testów driver dalej siedzi w ramie i go nie usuniesz, trzeba go zabić ręcznie, ale też w testach napisać metodę po testach do zabijania 🙂

Wynik testu zakończony błędem, spreparowany podaniem nie takiego okna karty.
Pozytywny wynik testu, spreparowany poprawnym tytułem w oknie karty przeglądarki.

Kody testów

using NUnit.Framework;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;
using System;

namespace TestyWSharku
{
    public class Tests
    {

        IWebDriver driver;
        string tytulniepoprawny = "wp.pl";
        string tytulpoprawny = "DuckDuckGo — Prywatność — jeszcze prostsza.";
        [SetUp]
        public void startBrowserSetup()
        {
            try
            {
                driver = new ChromeDriver("C:\\");
            }
            catch 
            {
               // Assert.Fail("Test się wywalił gdyż coś z driverem Chrome !!!");
            }
        }

        [Test]
        public void enterDuckDuckGo()
        {
            driver.Url = "http://www.duckduckgo.com";
            try
            {
                Assert.AreEqual(driver.Title, tytulpoprawny);
            }catch
            {
                Assert.Fail("Test się wywalił gdyż nie udało się pobrać tytułu !!!");
            }
        }

        [OneTimeTearDown]
        public void GlobalTeardown()
        {
            driver.Close();
        }

    }
}

Kod wygląda następująco.
W assercie możecie zmienić na zmienną tytulniepoprawny, aby zobaczyc jak zachowuje się kompilator, w przypadku wywalenia się na asercji.

Dobra trochę podrasowałem, żebyście mieli co analizować.

Pamiętajcie by stworzyć folder do screenów, na razie statyczne ścieżki.
Dodałem drugi test, który wyszukuje test wciska szukaj i robi screenshota.
Plus przeglądarka odpala się przed każdym testem jeśli macie:
[SetUp] przed metodą konfiguracji drivera, [OneTimeSetUp], zaś ta adnotacja robi to raz na cały ‘zestaw’ testów w danej klasie.
No i standardowo macie kod, może kiedyś ogarnę wrzucanie, to na githuba, ale zobaczę.

using NUnit.Framework;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;
using System;

namespace TestyWSharku
{
    public class Tests
    {

        IWebDriver driver;
        string date = DateTime.Now.ToString();
        string tytulniepoprawny = "wp.pl";
        string tytulpoprawny = "DuckDuckGo — Prywatność — jeszcze prostsza.";

        //[SetUp]
        [OneTimeSetUp]
        public void startBrowserSetup()
        {
            try
            {
                driver = new ChromeDriver("C:\\");
                driver.Manage().Window.Maximize();
            }
            catch 
            {
               // Assert.Fail("Test się wywalił gdyż coś z driverem Chrome !!!");
            }
        }

        [Test]
        public void enterDuckDuckGo()
        {
            driver.Url = "http://www.duckduckgo.com";
            
            try
            {
                Assert.AreEqual(driver.Title, tytulpoprawny);
            }catch
            {
                Assert.Fail("Test się wywalił gdyż nie udało się pobrać tytułu !!!");
            }
        }

        [Test]
        public void goToWeatherTakeScreenshot()
        {
            try
            {
                IWebElement inputfield = driver.FindElement(By.Id("search_form_input_homepage"));
                IWebElement searchbutton = driver.FindElement(By.Id("search_button_homepage"));
                inputfield.SendKeys("Pogoda Lublin");
                searchbutton.Click();
                string date = DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss");
                date = date.Replace(':', '-');
                date = date.Replace('.', '-');
                date = date.Replace(' ', '_');
                Screenshot image = ((ITakesScreenshot)driver).GetScreenshot();
                image.SaveAsFile("C:\\Screenshot\\" + date + ".png", ScreenshotImageFormat.Png);
            }
            catch
            {
                Assert.Fail("Uuu nie udało się zrzutu zapisać ! :(");
            }
        }

        [OneTimeTearDown]
        public void killDriver()
        {
            driver.Close();
        }

    }
}

Kod wyżej, powodzenia. W następnym wpisie dotyczącym C# będzie wydzielenie klas, elementów. Bardziej zaawansowane pomysły na testy.
Może pozbędziemy się plików binarnych .exe driverów.
Plus sprawdzimy na Firefoxa, czy śmiga na tej często problematycznej przeglądarce.
I to by było na tyle trzymajcie się, siedźcie w domach, czytajcie książki, oglądajcie filmy, spędźcie ten czas z rodziną – będzie dobrze ! 🙂

Napisz komentarz