Как проверить, не записаны ли недопустимые входные данные, и как протестировать функцию поиска - PullRequest
0 голосов
/ 18 июня 2020

Итак, я учусь использовать Selenium Webdriver для тестирования проекта. Мне нужно создать тест, когда пользователь вводит неверные данные, они не будут записаны. Я использую Asert.IsNull для этого, но это только мое предположение, я не знаю, лучший ли это способ сделать это. И есть случай, когда он не равен нулю, когда это должно быть. Также мне нужно создать тест для функции поиска, но в настоящее время я не знаю, как проверить, верен ли результат поиска. Я также включил изображения ниже, чтобы вы могли лучше рассмотреть проблемы. Буду очень признателен, если кто-нибудь поможет мне с этим. Большое спасибо.

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System.Linq;
using Group11.XE.Test.XEDTO;
using OpenQA.Selenium.Support.UI;
using OpenQA.Selenium.Interactions;
using System.Threading;
using Group11.XE.Test.Helper;

namespace Group11.XE.Test
{
    [TestClass]
    public class CreateXE : Load
    {

        public CreateXE()
        {
            driver = new ChromeDriver();
            homeURL = "http://localhost:4200";

        }

        [TestMethod]
        [DataRow("Exciter", "Xanh", 2, "Ex 150", "71C4-45677", 42000000, 2, "Xe vua mua", 135,"Yamaha", 2019)]
        public void Create_XE_With_OK_Status(String Name, String Color, int Seats, String Model, String License, int Price, int Consumption, String Notes, int Mspeed, String Manufacturer, int Manufacture_year)
        {
            String Code = (new Random().Next(1, 99999999)).ToString();


            Login();

            driver.Navigate().GoToUrl(homeURL + "/app/admin/xe-group11-add");
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(7);
            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(60));
            wait.Until(e => e.FindElement(By.Name("xE_CODE")));
            Thread.Sleep(8000);

            //Act;
            driver.FindElement(By.Name("xE_CODE")).SendKeys(Code);
            driver.FindElement(By.Name("xE_NAME")).SendKeys(Name);
            driver.FindElement(By.Name("xE_COLOR")).SendKeys(Color);
            driver.FindElement(By.Name("xE_SEATS")).SendKeys(Seats.ToString());
            driver.FindElement(By.Name("xE_MODEL")).SendKeys(Model);
            driver.FindElement(By.Name("xE_LICENSE_PLATE")).SendKeys(License);
            driver.FindElement(By.Name("xE_PRICE")).SendKeys(Price.ToString());
            driver.FindElement(By.Name("xE_CONSUMPTION")).SendKeys(Consumption.ToString());
            driver.FindElement(By.Name("xE_NOTES")).SendKeys(Notes);
            driver.FindElement(By.Name("xE_MAX_SPEED")).SendKeys(Mspeed.ToString());
            driver.FindElement(By.Name("xE_MANUFACTURER")).SendKeys(Manufacturer);
            driver.FindElement(By.Name("xE_MANUFACTURE_YEAR")).SendKeys(Manufacture_year.ToString());
            //driver.FindElement(By.Name("xE_STATUS")).SendKeys(Status);

            IWebElement comboBox = driver.FindElement(By.Name("xE_STATUS"));
            SelectElement selectedValue = new SelectElement(comboBox);
            selectedValue.SelectByIndex(0);

            String Status = (string)((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0].options[arguments[0].selectedIndex].text;", selectedValue);

            //String Status = selectedValue.SelectByIndex(0).value;

            //get value of select element



            IWebElement ele = driver.FindElement(By.XPath("/html/body/app-root/ng-component/div/div/div[2]/ng-component/form/ul/li[1]"));
            IJavaScriptExecutor executor = (IJavaScriptExecutor)driver;
            executor.ExecuteScript("arguments[0].click();", ele);


            //Check with value of DB
            //CM_XE_DTO input = new CM_XE_DTO(Code, Name, Origin);
            XE_DTO finalRow = DataProvider.Instance.GetData<XE_DTO>("XE_SEARCH",new { XE_CODE = Code }).ToList().FirstOrDefault();

            //Assert
            Assert.AreEqual(Code, finalRow.XE_CODE);
            Assert.AreEqual(Name, finalRow.XE_NAME);
            Assert.AreEqual(Color, finalRow.XE_COLOR);
            Assert.AreEqual(Seats, finalRow.XE_SEATS);
            Assert.AreEqual(Model, finalRow.XE_MODEL);
            Assert.AreEqual(License, finalRow.XE_LICENSE_PLATE);
            Assert.AreEqual(Price, finalRow.XE_PRICE);
            Assert.AreEqual(Consumption, finalRow.XE_CONSUMPTION);
            Assert.AreEqual(Notes, finalRow.XE_NOTES);
            Assert.AreEqual(Mspeed, finalRow.XE_MAX_SPEED);
            Assert.AreEqual(Manufacturer, finalRow.XE_MANUFACTURER);
            Assert.AreEqual(Manufacture_year, finalRow.XE_MANUFACTURE_YEAR);
            Assert.AreEqual(Status, finalRow.XE_STATUS);

            driver.Close();

        }

        [TestMethod]

        [DataRow("", "Winner", "Cam", 2, "Ex 150", "71C4-38677", 39000000, 2, "Xe vua mua", 135, "Yamaha", 2019)]
        [DataRow("100", "", "Cam", 2, "Ex 150", "71C4-39677", 39000000, 2, "Xe vua mua", 135, "Yamaha", 2019)]
        [DataRow("101", "Winner", "Cam", 2, "Ex 150", "", 39000000, 2, "Xe vua mua", 135, "Yamaha", 2019)]

        public void Create_XE_With_Empty(String Code, String Name, String Color, int Seats, string Model, string License, int Price, int Consumption, string Notes, int Mspeed, string Manufacturer, int Manufacture_year)
        {
            Login();

            driver.Navigate().GoToUrl(homeURL + "/app/admin/xe-group11-add");
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(7);
            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(60));
            wait.Until(e => e.FindElement(By.Name("xE_CODE")));
            Thread.Sleep(8000);

            //Act

            driver.FindElement(By.Name("xE_CODE")).SendKeys(Code);
            driver.FindElement(By.Name("xE_NAME")).SendKeys(Name);
            driver.FindElement(By.Name("xE_COLOR")).SendKeys(Color);
            driver.FindElement(By.Name("xE_SEATS")).SendKeys(Seats.ToString());
            driver.FindElement(By.Name("xE_MODEL")).SendKeys(Model);
            driver.FindElement(By.Name("xE_LICENSE_PLATE")).SendKeys(License);
            driver.FindElement(By.Name("xE_PRICE")).SendKeys(Price.ToString());
            driver.FindElement(By.Name("xE_CONSUMPTION")).SendKeys(Consumption.ToString());
            driver.FindElement(By.Name("xE_NOTES")).SendKeys(Notes);
            driver.FindElement(By.Name("xE_MAX_SPEED")).SendKeys(Mspeed.ToString());
            driver.FindElement(By.Name("xE_MANUFACTURER")).SendKeys(Manufacturer);
            driver.FindElement(By.Name("xE_MANUFACTURE_YEAR")).SendKeys(Manufacture_year.ToString());

            IWebElement comboBox = driver.FindElement(By.Name("xE_STATUS"));
            SelectElement selectedValue = new SelectElement(comboBox);
            selectedValue.SelectByIndex(0);

            String Status = (string)((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0].options[arguments[0].selectedIndex].text;", selectedValue);

            IWebElement ele = driver.FindElement(By.XPath("/html/body/app-root/ng-component/div/div/div[2]/ng-component/form/ul/li[1]"));
            IJavaScriptExecutor executor = (IJavaScriptExecutor)driver;
            executor.ExecuteScript("arguments[0].click();", ele);
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(7);

            //Assert
            //Assert.IsTrue(driver.FindElement(By.Name("empty_field")).Displayed);

            XE_DTO finalRow = DataProvider.Instance.GetData<XE_DTO>("XE_SEARCH", new { XE_CODE = Code }).ToList().FirstOrDefault();

            //Assert

            Assert.IsNull(finalRow);

            driver.Close();
        }
}
}

Первый тестовый пример не имеет XE_CODE, но он не равен нулю при проверке

Пользовательский интерфейс для функции поиска

Результат функции поиска

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...