【问题标题】:Need help in modifying the Testng Report需要帮助修改 Testng 报告
【发布时间】:2018-03-23 11:07:16
【问题描述】:

在我的报告中,excel 表中的最后一个测试名称被附加到我的结果中。这是我的代码

public class Test_suite implements ITest {

    private String testInstanceName="";

    public String getTestName() 
    {
        return testInstanceName;
    }
    private void setTestName(String anInstanceName) 
    {
        this.testInstanceName = anInstanceName;
    }

    @DataProvider() 
    public Object[][] Unit() throws Exception
    {
        Object[][] testObjArray = Excel.getTableArray("./Test Data/Test.xlsx","Unit");
        return (testObjArray);
    }

    @BeforeMethod(alwaysRun=true)
    public void before(Method method,Object[] parameters)
    {
            String testCaseId="";
            testCaseId = parameters[0].toString();
            System.out.println(testCaseId);
            setTestName(testCaseId);
    }

@Test(dataProvider="Unit")
public void Test(){
}

我的报告看起来像这样

【问题讨论】:

  • 问题是……?!
  • 如何删除您可以在报告中看到的参数化值“(TC_7)”。

标签: testng testng-dataprovider reportng


【解决方案1】:

这是因为所有使用 dataProvider 的测试都将并行执行。使用的默认线程数为 10。如您所见,这些方法使用相同的类实例,在您的情况下 Test_suite.java

insance 变量 testInstanceName 是可变的,并被每个 dataprovider 线程覆盖,最新的用于设置为测试名称。您可以通过在 before 方法中包含设置测试名称逻辑而不使用实例变量来实现您想要做的事情

【讨论】:

  • 采纳您的建议后,我的问题仍未解决。我想从报告中显示的每个测试运行中删除 (TC_7)。现在我之前的方法代码看起来像 @BeforeMethod(alwaysRun=true) public void before(Method method,Object[] parameters) { String testCaseId=""; testCaseId = 参数[0].toString(); this.testInstanceName=testCaseId; } 我删除了 setTestName 函数。
  • 请帮忙
  • 您能分享一下您现在使用的代码版本及其输出吗?
  • *(TC_7) * 来自数据提供者,我不确定它是从哪里附加的。即使使用不同的侦听器,我也可以设置测试名称,但无法从数据提供者中删除附加的参数化值
【解决方案2】:
package API_Testing;

import java.lang.reflect.Method;

import org.testng.ITest;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import resources.Excel;
import resources.Utils;

public class Carto implements ITest{

    private String testInstanceName="";

    public String getTestName() 
    {
        return testInstanceName;
    }

    @DataProvider 
    public Object[][] Data() throws Exception
    {
        Object[][] testObjArray = Excel.getTableArray("./Test_Cases/Test_Cases.xlsx","Carto");
        return (testObjArray);
    }

    @BeforeMethod(alwaysRun=true)
    public void before(Method method,Object[] parameters)
    {
        String testCaseId="";
        testCaseId = parameters[0].toString();
        this.testInstanceName=testCaseId;
    }

    @Test(dataProvider="Data")
    public void Test(String TCname,String Type,String API,String Input,String Input_Path,String Validator,String Output,String Output_value )throws  Exception
    {
        Utils util=new Utils();
        Output_value=Output_value.substring(1,Output_value.length()-1);
        util.Test_body(Type, API, Input, Input_Path, Validator, Output, Output_value);
    }
}

现在我的代码是这样的,输出和我之前上传的一样。没有变化

【讨论】:

    猜你喜欢
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多