AssertJ 断言未按预期与 Selenium 一起工作
AssertJ assertions are not working as expected with Selenium
我目前正在使用 Cucumber 和 Java 开发基于 Selenium 的 BDD 测试自动化框架。我的框架使用的是 Junit,由于 Junit 不支持软断言,我正在尝试使用 AssertJ 断言进行测试。但是,这些断言似乎不起作用。让我尝试借助以下代码来解释这一点
//检查表单提交的方法
public void ValidateForm(String name, String company, String email, String city, String state, String country, String question)
throws InterruptedException {
ContactName.sendKeys(name);
Company.sendKeys(company);
Email.sendKeys(email);
City.sendKeys(city);
browserAction.selectFromDD(State, state);
browserAction.selectFromDD(Country, country);
Questions.sendKeys(question);
SubmitButton.click();
Thread.sleep(4000);
}
// Method to check form landing page
public void CheckFormSubmission() {
assertThat(driver.getTitle().contains("Thank you"));
}
}
如您所知,ValidateForm() 方法用于提交表单中的值,而 CheckFormSubmission() 方法用于在提交表单后检查着陆页的标题。现在,我在着陆页标题上应用断言,如果它包含“谢谢”,则测试应该通过,如果它包含任何其他文本,则测试应该失败并抛出一个异常,这最终应该标记我的测试在范围报告中失败。
但是,随着我的测试继续进行,这个断言似乎永远不会起作用,即使我没有获得匹配的登录页面标题,测试也会被标记为已通过并且不会抛出任何异常。你能帮我理解我在这里可能做错了什么吗?
我认为不是这个:
assertThat(driver.getTitle().contains("Thank you"));
你应该使用这个:
String expectedMsg = "Thank you";
assertThat(expectedMsg).contains(driver.getTitle());
你把括号放错了。您的代码必须看起来像
assertThat(driver.getTitle()).contains("Thank you");
通常 AssertJ 断言遵循模式
assertThat(value).someAssertion();
这样你就可以获得自动补全功能,这是 AssertJ 的一大优点。
我目前正在使用 Cucumber 和 Java 开发基于 Selenium 的 BDD 测试自动化框架。我的框架使用的是 Junit,由于 Junit 不支持软断言,我正在尝试使用 AssertJ 断言进行测试。但是,这些断言似乎不起作用。让我尝试借助以下代码来解释这一点
//检查表单提交的方法
public void ValidateForm(String name, String company, String email, String city, String state, String country, String question)
throws InterruptedException {
ContactName.sendKeys(name);
Company.sendKeys(company);
Email.sendKeys(email);
City.sendKeys(city);
browserAction.selectFromDD(State, state);
browserAction.selectFromDD(Country, country);
Questions.sendKeys(question);
SubmitButton.click();
Thread.sleep(4000);
}
// Method to check form landing page
public void CheckFormSubmission() {
assertThat(driver.getTitle().contains("Thank you"));
}
}
如您所知,ValidateForm() 方法用于提交表单中的值,而 CheckFormSubmission() 方法用于在提交表单后检查着陆页的标题。现在,我在着陆页标题上应用断言,如果它包含“谢谢”,则测试应该通过,如果它包含任何其他文本,则测试应该失败并抛出一个异常,这最终应该标记我的测试在范围报告中失败。
但是,随着我的测试继续进行,这个断言似乎永远不会起作用,即使我没有获得匹配的登录页面标题,测试也会被标记为已通过并且不会抛出任何异常。你能帮我理解我在这里可能做错了什么吗?
我认为不是这个:
assertThat(driver.getTitle().contains("Thank you"));
你应该使用这个:
String expectedMsg = "Thank you";
assertThat(expectedMsg).contains(driver.getTitle());
你把括号放错了。您的代码必须看起来像
assertThat(driver.getTitle()).contains("Thank you");
通常 AssertJ 断言遵循模式
assertThat(value).someAssertion();
这样你就可以获得自动补全功能,这是 AssertJ 的一大优点。