【问题标题】:How to write a selenium c# x unit test for performing crud operations without making changes to the actual database?如何在不更改实际数据库的情况下编写 selenium c# x 单元测试来执行 crud 操作?
【发布时间】:2021-06-23 07:24:52
【问题描述】:

我的程序有一个显示表格的页面以及添加/编辑/删除用户的按钮。我编写了 selenium 测试来模拟单击这些按钮并输入用户信息并提交表单。问题是我正在对我的数据库进行更改,并且我必须在每次运行测试时不断更改我发送的键的值。如果不这样做,我不知道如何模拟/测试这些案例。这是我添加用户的测试:

[Fact]
        public void AddUserSuccessfully()
        {
            var email = "anotheradd@gmail.com";

            using IWebDriver driver = new ChromeDriver();
            driver.Manage().Window.Maximize();
            driver.Navigate().GoToUrl(BaseUrl.testUserUrl);

            var login = new Login(driver);
            login.EnterEmail();
            login.EnterPassword();
            login.HitSubmit();

            var users = new Users(driver);
            users.ClickOnAddUser();
            users.EnterFirstName("Anita");
            users.EnterLastName("Work");
            users.EnterEmail(email);
            users.EnterPassword("P*$sW0rd");
            users.ConfirmPassword("P*$sW0rd");
            users.EnterRole("Developer");
            Pause.SimulatePause();
            var modal = new Modal(driver);
            modal.SubmitForm();

            driver.Navigate().Refresh();

            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));
            var emailFound = wait.Until((d) => d.PageSource.Contains(email));
            Assert.True(emailFound);

            driver.Quit();
        }

如果有人有任何建议,我将不胜感激。 谢谢,

【问题讨论】:

  • 你必须使用硒吗?另一个想法可能是使用像 NUnit 这样的单元测试框架,并使用像 Moq 这样的框架来模拟数据层。这将允许您在不访问数据库的情况下测试您的应用程序逻辑。
  • 是的,我必须使用硒。我们正在测试用户界面。
  • 您是否有权访问任何类或代码以从数据库中删除数据?如果是这样,您可以在测试完成后删除此测试的数据。除此之外,你基本上坚持你所拥有的。
  • @GregBurghardt 我的测试项目与我正在测试的项目位于一个单独的解决方案中。

标签: c# selenium crud xunit


【解决方案1】:

希望您没有在 PROD 上运行它,但正如其他人所建议的那样,如果您对测试数据库具有读/写访问权限,请在清理代码中编写逻辑以从表中删除用户。

  • Moq 库可用于单元测试,但不适用于 Selenium,因为您似乎正在尝试验证 Post-back 以确保您创建的用户确实出现在页面上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-08
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 2017-12-01
    • 2021-08-22
    • 1970-01-01
    相关资源
    最近更新 更多