testng 相关问题

TestNG是一个测试框架,专注于提供Java编程语言中的单元和功能测试功能。它支持并行测试,数据提供程序,依赖项,组和其他功能。

TestNG:如何串行运行类和并行测试?

我有一个如下所示的testng.xml, 我有一个如下所示的 testng.xml, <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="MyTestSuite" parallel="tests" thread-count="2"> <test name="Test1"> <classes> <class name="com.example.FBOneClass" /> <class name="com.example.FBTwoClass" /> </classes> </test> <test name="Test2"> <classes> <class name="com.example.GOneClass" /> <class name="com.example.GTwoClass" /> </classes> </test> </suite> 在这里,我试图实现测试并行运行。我可以通过parallel="tests" thread-count="2"做到这一点 但是该类应该串行运行!就像 com.example.FBOneClass 中的所有方法一样,应该首先执行,然后 com.example.FBTwoClass 方法应该运行。 我面临的是,com.example.FBTwoClass中的一些@Test方法在com.example.FBOneClass@Test方法之前执行。 如何实现预期的行为? 提前谢谢🙏 注意:我对此进行了研究。我们可以使用“dependsOn”参数来实现它。但我不能使用com.example.FBTwoClass第一个方法依赖于com.example.FBOneClass最后一个方法! 您应该在套件文件的 parallel="false" 标签中设置 <test>。这将确保 <test> 标签并行执行,但 <test> 标签内的各个测试类将按顺序运行。 注意:另请确保您使用的是最新发布的 TestNG 版本, 7.5.1 - 如果您使用的是 JDK8 7.8.0 - 如果您使用的是 JDK11

回答 1 投票 0

如何处理StackTraceElement异常

我收到 UI :clickNewPurchase() 中出现异常:[Ljava.lang.StackTraceElement;@52e6b75 异常。但问题是它能够导航下一页。您可以在下面找到代码。我怎样才能避免

回答 1 投票 0

错误:java:无法访问io.github.bonigarcia.wdm.WebDriverManager错误的类文件

当我使用 WebDriver Manager 设置运行下面的简单 @Test selenium 代码时,我面临以下错误 “java:无法访问 io.github.bonigarcia.wdm.WebDriverManager 错误的类文件类

回答 2 投票 0

Cucumber 7 + TestNG - 测试运行开始前的动态标签操作

我在我的项目中使用 TestNG 和 Cucumber。 使用的版本: org.testng 测试 我在我的项目中使用 TestNG 和 Cucumber。 使用过的版本: <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>7.4.0</version> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-testng</artifactId> <version>7.0.0</version> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-java</artifactId> <version>7.0.0</version> </dependency> 一切正常,但我需要在测试运行开始之前进行一些动态标签操作。 更具体地说 - 我需要根据某些环境条件添加额外的过滤标签表达式。 当前的实现是带有 AbstractTestNGCucumberTests 字段的 TestNGCucumberRunner 类。 我需要更改/添加一些代码行的地方是在 TestNGCucumberRunner 类的构造函数中,因为运行程序就在那里初始化并开始测试运行。 问题是 cucumber-testng 依赖项中的几乎所有类都不是 public 和 final。所以我无法扩展类并覆盖一些逻辑。 我看到的唯一方法是复制依赖于我的源文件夹的所有类,这是一个奇怪而愚蠢的想法。 有什么建议可以让我实现我的目标吗? 扩展 AbstractTestNGCucumberTests 时,您可以过滤 scenarios() 的输出 public class RunCucumberTest extends AbstractTestNGCucumberTests { @DataProvider(parallel = true) @Override public Object[][] scenarios() { Object[][] scenarios = super.scenarios(); // Do filtering here return scenarios; } } 由于数据提供程序用于调用测试方法,因此您可以安全地将第一个数组元素转换为 PickleWrapper 并使用 pickleWrapper.getPickle().get tags() 访问标签。 上面这个解决方案非常好。它让我走上了正确的道路。我不明白如何在运行时覆盖标签。但我希望整个过滤工作与黄瓜标签的常见“和”“或”“非”表达式一起工作,并且也像传递用逗号分隔的多个标签一样简单。 因此,在从 AbstractTestNGCucumberTests 开始挖掘黄瓜类一整天后,我了解了标签的具体处理方式。然后,我找到了完美的解决方案。这是完整的代码。 /** * This runner is a hybrid runner which can run normally as local runner with Cucumber Options or run with tags variable passed from Pipeline tools or from any other sources * <br></br> * This runner works with either of them or both combined. Let's say You have passed '@smoke' tag in @CucumberOptions annotation which have 100 scenarios, then additionally you can also pass a runtime tag "@Login" and filter again. */ @CucumberOptions( features = "src/test/resources/features/", glue = { "stepDefinitions", "hooks" }, plugin = { "pretty", "com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:" }, tags = "" ) //Pass tags here as usual public class CucumberRunnerTest extends AbstractTestNGCucumberTests { @DataProvider @Override public Object[][] scenarios() { Object[][] scenarios = super.scenarios(); String dynamicTags = System.getenv("tags"); //passed from Pipeline //Or add any other sources you want to get the tags from if ( dynamicTags != null && !dynamicTags.equals("") ) return (Arrays.stream(scenarios).filter(scenario -> TagExpressionParser.parse(dynamicTags).evaluate((( PickleWrapper ) scenario[0]).getPickle().getTags())).collect(Collectors.toList())).toArray(new Object[0][0]); else return scenarios; } } 我将其范围缩小到一行简单的 TagExpression,但我花了几个小时才找到这些并理解这么多不同的类。 尝试一次,希望有帮助。

回答 2 投票 0

当重试节点测试时,范围报告测试被标记为失败

我有一个测试自动化项目,使用:Java、Maven、TestNG、Selenium WebDriver 和 Extent Reports(最新 5.0.9)。 我的大多数测试都使用 DataProviders,并且我还实现了 RetryAnalyzer...

回答 1 投票 0

TestNG父类的一些方法没有运行

我有一个带有 TestNG 注释的父类 BaseClass,如下所示 公共类基类 { 受保护的静态 WebDriver 驱动程序; @BeforeSuite 公共无效 beforeSuite() {

回答 2 投票 0

正在测试的代码中的 System.out.println 未出现在 TestNG 输出中

我有一些带有 System.out.println("blah") 的代码。我正在使用 TestNG 进行测试。如果我将 System.out.println 放在用 @Test 注释的块中,它们就会出现在测试输出中。没什么...

回答 1 投票 0

QAF |所需的功能不适用于 QAF 4.0.0RC1 和 Selenium 4

使用 Seleniun 4 升级到 QAF 4.0.0RC1 后,所需的功能无法正常工作。我尝试了以下属性: chrome.additional.capability={"chromeOptions":{"args":[&quo...

回答 1 投票 0

Extent 报告:面临错误,“对于 ExtentREports 类型未定义方法 AttachReporter(ExtentSparkReporter)”

我正在学习如何从 Youtube 创建范围报告。我正在尝试编写相同的代码。但是当我尝试将sparkeReports附加到extentreports时,我遇到了提到的错误。 ...

回答 2 投票 0

如何正确删除 Maven 项目中的依赖项

我有一个 Java Maven 项目,在 pom.xml 文件中定义了一些依赖项。最近我决定从 Junit 迁移到 TestNG,因此我从 pom.xml 中删除了 Junit 依赖项并添加了

回答 1 投票 0

Allure TestNG - 带附件的日志 - 报告中未显示图像

我正在使用: 魅力测试 并尝试添加带有附件的日志: public void allure_LogWithAttachment(字符串文件夹, 字符串名称, 字符串...

回答 1 投票 0

Gradle 任务检查属性是否已定义

我有一个执行 TestNG 测试套件的 Gradle 任务。 我希望能够向任务传递一个标志,以便使用特殊的 TestNG XML 套件文件(或者如果标志不是,则仅使用默认套件...

回答 4 投票 0

有没有办法有一个可重用的方法来查找页面工厂模型中使用WebElement类型参数的所有WebElement

我有一个自动化框架,它是使用页面工厂的页面对象模型驱动的 @FindBy(xpath = "xpathValue") 私有WebElement通知图标; 我想要一个可重复使用的实用程序...

回答 1 投票 0

可以通过编程方式启动 TestNGCucumberRunner

我想使用 io.cucumber.cucumber-testng 以编程方式启动 Cucumber 测试。我想从 Scala 应用程序开始运行。 我只能通过引导 TestNGCucumberRunner f 来开始运行...

回答 1 投票 0

线程“main”中出现异常 java.lang.NoClassDefFoundError:使用 TestNG 时出现 org/slf4j/LoggerFactory 错误

我已经从市场安装了 testNG。我正在研究使用 Selenium 和 Java 进行软件测试。我希望打印出这个基本代码,但它显示错误。 包用户界面; 重要...

回答 2 投票 0

如何从 html 日期选择器中选择今天,而不是仅仅使用 maven 项目的 selenuim 和 testng 将日期放在那里

我无法点击日历中的“今天”按钮。这是该网站 https://www.wufoo.com/html5/date-type/ 中的示例。 这是我正在谈论的日期的 html...

回答 2 投票 0

org.openqa.selenium.NoAlertPresentException:没有这样的警报 |硒 Java

WebDriverWait 等待 = new WebDriverWait(driver,Duration.ofMillis(5000)); wait.until(ExpectedConditions.alertIsPresent());警报警报 = driver.switchTo().alert();警报.接受();` org.openqa.selenium.

回答 1 投票 0

如何为junit 5重做testng.xml

我目前正在将项目从 testNG 转移到 junit 5,并且我在将 testng.xml 替换为 junit 5 上的类似实现时遇到问题。我对此很陌生,所以我无法弄清楚。 .

回答 1 投票 0

我的 Eclipse 上没有使用 TestNG 选项运行

我已经通过maven安装了TestNG的依赖。 但仍然使用测试 NG 选项运行并没有出现,所以我从 INSTALL 软件在 Eclipse 中安装 TestNG,但仍然使用测试 NG 选项运行而不是

回答 1 投票 0

TestNG + MockServer 顺序运行两个测试套件

我有两个测试套件。项目是gradle项目,有两个模块。他们每个人都有自己的单元测试。我使用模拟服务器(https://www.mock-server.com/)来模拟服务器端点。如果我运行每个

回答 0 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.