gpt4 book ai didi

java - TestNG - 如何在 testng 自定义可通过电子邮件发送的报告中打印运行时 testng 参数?

转载 作者:太空宇宙 更新时间:2023-11-04 09:26:45 27 4
gpt4 key购买 nike

我发现有一个选项可以通过surefire插件将参数设置为testng xml,然后可以从命令行发送参数。

<plugins>
[...]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
<systemPropertyVariables>
<browser>firefox</browser>
</systemPropertyVariables>
</configuration>
</plugin>
[...]
</plugins>

引用: https://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html https://maven.apache.org/surefire/maven-surefire-plugin/examples/system-properties.html

需要打印 testng 自定义电子邮件报告中的参数。能够使用以下代码打印testng xml中指定的testng参数。但是,无法打印surefire插件中指定的参数。

注意:System.getProperty("browser") 在这里起作用。但是,我想打印它们而不必指定参数名称(例如“浏览器”),如下所示。但下面的一个不起作用。

Map<String, String> allParameters = context.getCurrentXmlTest().getAllParameters();
for(String parameter: allParameters.keySet()) {
System.out.println(parameter + " : " + allParameters.get(parameter));
}

示例:

import java.util.Map;
import org.testng.ITestContext;
import org.testng.ITestResult;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class TestNGTest {
ITestContext context;

@BeforeTest
public void beforeTest(ITestContext context) {
this.context = context;
}

@Parameters({"browser"})
@Test
public void method(String browser) {
System.out.println(browser);
Map<String, String> allParameters = context.getCurrentXmlTest().getAllParameters();
for(String parameter: allParameters.keySet()) {
System.out.println(parameter + " : " + allParameters.get(parameter));
}
}
}

实际输出:

[RemoteTestNG] detected TestNG version 7.0.0
chrome
key : value

===============================================
Suite
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
===============================================

预期输出:

[RemoteTestNG] detected TestNG version 7.0.0
chrome
key : value
browser : chrome

===============================================
Suite
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
===============================================

Testng.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="classes" thread-count="4">
<test name="Front-End" group-by-instances="true">
<parameter name="key" value="value"></parameter>
<classes>
<class name="com.ftd.automation.framework.tests.TestNGTest" />
</classes>
</test>
</suite>

请帮助我如何打印在surefire插件中指定或在命令行中传递的testng参数。

最佳答案

假设您正在使用命令行参数运行,例如,

mvn test -Dbrowser=firefox

然后通过获取参数,

import org.testng.annotations.Parameters;

@Parameters("browser")
@Test
public void myTestMethod(String browser){
System.out.println(browser);
}

//or as Test parameter
@Test(parameters = {"browser"})
public void myTestMethod(String browser){
System.out.println(browser);
}

//or System.getProperty() way
@Test
public void myTestMethod(){
System.out.println(System.getProperty("browser"));
}

以上效果很好。此外,如果您需要使用 testng.xml,您可以指定 suiteXmlFile,例如,

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
<systemPropertyVariables>
<browser>firefox</browser>
</systemPropertyVariables>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>

编辑:

仅供引用,System.grtProperties() 列出了所有属性,从命令行设置的属性也会在那里,但无法将它们与系统添加的其他属性区分开来

关于java - TestNG - 如何在 testng 自定义可通过电子邮件发送的报告中打印运行时 testng 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57603633/

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