我正在使用 TestNG 和 selenium webdriver java。我想制作一个json格式的输出报告,testng可以制作一个json格式的报告吗?请给我一个关于这个问题的例子。
您可以编写自己的报告程序,以您需要的任何格式生成测试执行报告。这是一个简单的 json 报告器的示例
package test;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
import java.util.Set;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.testng.IReporter;
import org.testng.ISuite;
import org.testng.ITestContext;
import org.testng.ITestResult;
import org.testng.xml.XmlSuite;
public class Reporter implements IReporter {
@SuppressWarnings("unchecked")
public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) {
JSONArray results = new JSONArray();
suites.forEach(element->{
results.add(createSuiteJsonObject(element));
});
try (FileWriter file = new FileWriter(outputDirectory + "/report.json")) {
file.write(results.toJSONString());
} catch (IOException e) {
//handle
}
}
@SuppressWarnings("unchecked")
public JSONObject createSuiteJsonObject(ISuite suite) {
JSONObject result = new JSONObject();
JSONArray passedMethods = new JSONArray();
JSONArray failedMethods = new JSONArray();
JSONArray skippedMethods = new JSONArray();
suite.getResults().entrySet().forEach(element -> {
ITestContext context = element.getValue().getTestContext();
passedMethods.addAll(createResultJsonArray(context.getPassedTests().getAllResults()));
failedMethods.addAll(createResultJsonArray(context.getFailedTests().getAllResults()));
skippedMethods.addAll(createResultJsonArray(context.getSkippedTests().getAllResults()));
});
result.put("name", suite.getName());
result.put("passed", passedMethods);
result.put("failed", failedMethods);
result.put("skipped", skippedMethods);
return result;
}
@SuppressWarnings("unchecked")
public JSONArray createResultJsonArray(Set<ITestResult> results) {
JSONArray result = new JSONArray();
results.forEach(element ->{
JSONObject currentJsonResult = new JSONObject();
currentJsonResult.put("name", element.getName());
result.add(currentJsonResult);
});
return result;
}
}
以及它生成的报告示例
[
{
"name": "Suite1",
"passed": [
{
"name": "test1"
}
],
"failed": [
{
"name": "test2"
},
{
"name": "test3"
}
],
"skipped": [
{
"name": "test4"
}
]
}
]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)