gpt4 book ai didi

selenium-webdriver - 如何在 TestNG 中针对 2 个或更多预期值断言实际值

转载 作者:行者123 更新时间:2023-12-02 03:39:18 24 4
gpt4 key购买 nike

自动化保险申请。为 selenium web 驱动程序测试编写 TestNG 断言以验证策略的开始日期,默认情况下是今天的日期。

但在某些情况下,可能是明天的日期,具体取决于保险公司和计划。我想将其包含在断言中。但我想验证这两个中的任何一个,开始日期=今天或明天。想要结合以下 2 个断言。

我可以通过创建第三个 bool 变量并检查日期以查看它是否与其中一个匹配并使 bool 值为真并进行 bool 断言来做到这一点,任何人都知道在 testNG 中直接执行此操作的任何其他方法。

1.    Assert.assertEquals(start_date, date_today, "Assertion failed-  Start Date");

2. Assert.assertEquals(start_date, date_tomorrow, "Assertion failed- Start Date");

在junit中我们有类似的东西

assertThat(result, isOneOf("value1", "value2"));

可用于断言类似情况。

我们可以在testNG中做同样的操作吗?

最佳答案

this similar question 一样, 不是含蓄的。顺便说一句,JUnit 中的 assertThat 可能依赖于 Hamcrest 匹配器,也许是旧版本。无论如何,您至少有以下选择:

  • 使用 TestNG 的 assertTrue
  • 使用额外的库,例如 Hamcrest , AssertJ

依赖关系:

    <dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.9.0</version>
<scope>test</scope>
</dependency>

代码:

import org.testng.annotations.Test;

import java.time.LocalDate;

import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.CoreMatchers.anyOf;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.testng.Assert.assertTrue;

public class SomeTest {
@Test // compare strings (usually that's what you get as values from a webpage)
public void shouldCheckMultipleStringValues() {
// simulate some data
String myText = "my text";

// TestNG
assertTrue(myText.equals("my text") || myText.equals("your text") || myText.equals("his text"));

//Hamcrest
assertThat(myText, anyOf(equalTo("my text"), equalTo("your text"), equalTo("his text")));

// AssertJ
assertThat(myText).isIn("my text", "your text", "his text");
}

@Test // but you can even compare dates if you need to
public void shouldCheckMultipleDateValues() {
// simulate some date
LocalDate myDate = LocalDate.now();

// simulate a bunch of expected dates
LocalDate yesterday = LocalDate.now().minusDays(1);
LocalDate now = LocalDate.now();
LocalDate tomorrow = LocalDate.now().plusDays(1);

// TestNG
assertTrue(myDate.equals(yesterday) || myDate.equals(now) || myDate.equals(tomorrow));

//Hamcrest
assertThat(myDate, anyOf(equalTo(yesterday), equalTo(now), equalTo(tomorrow)));

// AssertJ
assertThat(myDate).isIn(yesterday, now, tomorrow);
assertThat(myDate).isBetween(yesterday, tomorrow);
}
}

关于selenium-webdriver - 如何在 TestNG 中针对 2 个或更多预期值断言实际值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49194920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com