При создании имен пользовательских методов с использованием ITest создается неверный отчет HTML, в котором для всех тестов добавлено повторяющееся значение - PullRequest
0 голосов
/ 24 января 2019

Возникла проблема, похожая на эту, при попытке получить уникальные имена методов с помощью ITest.У меня есть фабричный метод с поставщиком данных, определенный для тестирования одного и того же контрольного примера с несколькими данными.Когда я пытаюсь сгенерировать уникальные имена методов для каждого запуска теста, добавляя параметры, отвечающие за каждый запуск теста, используя ITest и getTestName ().Я вижу, что мой файл TEST-TESTSUIT.xml генерирует уникальные имена методов правильно, как показано ниже.

"1.1.1.1_testmethod_parameter1" time="0.252"
"1.1.1.1_testmethod_parameter2" time="0.252"

Но в файле Index.html я могу наблюдать повторяющееся значение, которое отвечает за последний прогон теста, добавленный длявсе тесты, как показано ниже.В файле index.html я вижу значение (1.1.1.20_login_parameter1), повторяющееся для всех результатов теста.

1.1.1.1_testmethod_parameter1 Test class: xxxxxxxx(1.1.1.20_login_parameter1) Test method: 1.1.1.1

1.1.1.1_testmethod_parameter1 Test class: xxxxxxxx(1.1.1.20_login_parameter1) Test method: 1.1.1.1

В чем может быть причина этого.Это ошибка на стороне testng.Можем ли мы исправить это с нашей стороны.Я пробовал различные подходы, предложенные в [1].Но у меня ничего не получалось.Оцените ваши идеи по этому поведению

Пример исходного кода, аналогичного тому, который я пробовал, приведен ниже

import org.testng.ITest;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Factory;
import org.testng.annotations.Test;
import java.lang.reflect.Method;

public class TestAPIDD implements ITest
{
private String apiName;

String testInstanceName = "";
Parameters tp;

@Factory(dataProvider="apiDataProvider")
public TestAPIDD(String apiName, String userName) {

    tp = new Parameters(apiName, userName);
    this.apiName = tp.getAPIName();
}

@DataProvider(name = "apiDataProvider")
public Object[][] dataProvider() {
    return new Object[][] { { "multiResourceAPI", "publisher1" }, { "ma     lformedAPI", "publisher2" }, { "wsdlAPI","admin" } };
}

/**
 * Constructor for the class TestAPIDD
 */
public TestAPIDD() {

}

/**
 * Login Test
 */
@Test(description="1.1.1.1")
public void testLogin()
{
   System.out.println("USER NAME: "+ tp.getUserName());
   Assert.assertTrue(true);

}

@Test(description="1.1.1.2")
public void testAPICreate() 
{
    System.out.println("APINAME: "+ tp.getAPIName());
    this.helperMethod();
    Assert.assertTrue(true);
}

@BeforeMethod(alwaysRun = true)
public void changeTestCaseName(Method method) {
    testInstanceName = method.getAnnotation(Test.class).description() + "_" + method.getName() +"_"+ apiName;
}

private void helperMethod() {
    System.out.println("TEST HELPER");
}

/**
 * Implementation of the getTestName in org.testng.ITest Interface.
 * This will set the name for the test case in TEST-TestSuite.xml
 */
public String getTestName() {
    return testInstanceName;
}

}

Благодарим вас за помощь в устранении этой проблемы.Это ошибка на стороне Testng

1 Ответ

0 голосов
/ 01 февраля 2019

удалось решить эту проблему, написав класс CustomTestHTMLReporter.java, удалив значение testname, которое добавляется в конце имени класса в index.html, и добавив вновь созданный класс CustomTestHTMLReporter в качестве прослушивателя в testng. XML-файл.

Руководство используется - раздел 11 Пользовательский отчет в [1]

[1]. https://examples.javacodegeeks.com/enterprise-java/testng/testng-html-xml-reports-example/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...