【发布时间】: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 我的测试项目与我正在测试的项目位于一个单独的解决方案中。