java - testng 中的并行方法执行只执行从类中调用的最后一个方法
问题描述
我有一个包含 3 种方法的类的测试套件文件。在套件级别,我给了 parallel="methods" thread-count="3" 以便为类中的每个方法并行打开 3 个线程。
执行该套件时,将打开 3 个线程(浏览器)启动 URL,但根据方法中的步骤仅执行第 3 个线程/浏览器。对于第一个 2 个线程/浏览器没有执行任何操作。
尝试了很多来找到这个问题的答案,但找不到解决方案。以下是我使用的代码,如果我遗漏了什么,请纠正我。
基类:
public class BaseClass {
public WebDriver driver;
public WebDriverWait wait;
@BeforeMethod()
public void configure() {
System.setProperty("webdriver.chrome.driver","C:\\SeleniumDrivers\\chromedriver.exe");
driver=new ChromeDriver();
driver.get("https://www.google.com");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
@AfterMethod()
public void tearDown() {
driver.quit();
}
}
使用 TestMethods 的类
public class NewTest extends BaseClass{
@Test()
public void method1() {
driver.findElement(By.name("q")).sendKeys("parallel");
driver.findElement(By.name("q")).sendKeys(Keys.ENTER);
}
@Test()
public void method2() {
driver.findElement(By.name("q")).sendKeys("methods");
driver.findElement(By.name("q")).sendKeys(Keys.ENTER);
}
@Test()
public void method3() {
driver.findElement(By.name("q")).sendKeys("testng");
driver.findElement(By.name("q")).sendKeys(Keys.ENTER);
}
}
套件文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="methods">
<test thread-count="5" name="Test">
<classes>
<class name="website.NewTest"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
预期结果:并行打开 3 个浏览器。第一个浏览器应该搜索“并行”。第二个浏览器应该搜索“方法”。第三个浏览器应该搜索“自动化”。
实际结果:3 个浏览器并行打开,但首先打开的 2 个浏览器确实按照该方法执行操作,最后一个打开的浏览器搜索单词“parallelmethodtestng”并关闭。根据代码打开的前 2 个浏览器不会关闭,也不会最大化。
===============================================
Suite
Total tests run: 3, Failures: 2, Skips: 0
===============================================
希望这可以帮助。
解决方案
这可能发生在thread-count
不正确的地方。根据 TestNG 文档thread-count
应该在套件标签中。请按照以下说明使用。
<suite name="My suite" parallel="methods" thread-count="5">
在此处查看 testng 文档:
http://testng.org/doc/documentation-main.html#parallel-running
推荐阅读
- javascript - 如何在点之间插入线
- django - Django Rest Framework:在不提供 pk 的情况下更新和删除当前用户
- javascript - 对动态添加的字段进行排序
- javascript - 在 x 轴上进行缩放工作,使用 y 轴自动缩放到可见图形段上显示的数据点
- hyperledger-fabric - 如何在区块链和超级账本结构中检测到区块链或世界状态中的数据篡改(已添加区块的数据)?
- javascript - 指数代码,我不了解代码行为
- java - java.sql.SQLException:jdbcTemplate 中带有 In 子句的更新查询的列类型无效
- spring-boot - 部署在 PCF 上的 Spring Cloud Task 在 TaskExecution 端无法退出
- python - 使用 Beautiful Soup 进行网页抓取时出现奇怪的字符
- react-native - 在通知中显示下载文件成功并使用 rn-fetch-blob 打开文件