t.me/atinfo_chat Telegram группа по автоматизации тестирования

Jenkins + TestLink + TestNG + DataProvider й


(Denis Veselovskiy) #1

Есть настроеная такая вот связка Jenkins + TestLink + TestNG + Java. Работает гуд когда 1 кейс в тестлинке = 1 тестовый метод (@Test) в коде.

Но если заюзать DataProvider то результаты отмечаются в Тестлинке неккоректно.

К примеру

 

@Test(dataProvider = "validateFieldBase", dataProviderClass = CampaignData.class)
public void validateNameField(String campaignName) { ... }

и такой провайдер

@DataProvider
public static Object[][] validateFieldBase() {
Object[][] word = {
{"<script language='JavaScript'> alert('Hello') </script>"},
{"ASDGFFLKLKLKlddvddsghdsh"},
{"12344557688008853"},
{":!@#$%^&*()_."},
{"ASDASDasdas-123123211212&^%&^%"},
};
return(word);

}

 

Так вот, для теста validateNameField  существует 1 тесткейс в тестлинке.
Сейчас он помечается в тестлинке pass или fail в зависимости от того как прошел кейс с последними тестовыми данны из провайдера, тоесть 
{"ASDASDasdas-123123211212&^%&^%"}
даже если тест не прошел по данным которые внутри датапровайдера а по последним данным успешно - то весть тест в тестлинке пометится как pass, а хочется чтоб fail  ))

вопрос - как это сделать? 

пробовал в тестлинке настраиваить плагин по разному
1. 
Result Seeking Strategy - TestNG method name
2. 
 Result Seeking Strategy - TestNG method name and dataprovider  - с этим вообще не получилось, кастом филд с именем тестового метода не хотят сохранятся

 

Кто что подскажет??

 


(sawoy) #2

Привет.

1. Желательно указывать версии "Jenkins + TestLink + TestNG", это позволит более точно ответить на Ваш вопрос.

2. "Result Seeking Strategy - TestNG method name and dataprovider  - с этим вообще не получилось, кастом филд с именем тестового метода не хотят сохранятся" - это похоже баг в последней версии jenkins-testlink-plugin.

В файле src\main\resources\hudson\plugins\testlink\result\TestNGMethodNameDataProviderNameResultSeeker\config.jelly вместо:

    <f:entry title="${%TestNG method name Key Custom Field}" help="${rootURL}/../plugin/testlink/help-atKeyCustomField.html">
        <f:textbox id="methodNameKeyCustomField" name="TestNGMethodNameDataProviderNameResultSeeker.methodNameKeyCustomField" value="${instance.methodNameKeyCustomField}" />
    </f:entry>
должно быть, если не ошибаюсь:
    <f:entry title="${%TestNG method name Key Custom Field}" help="${rootURL}/../plugin/testlink/help-atKeyCustomField.html">
        <f:textbox id="keyCustomField" name="TestNGMethodNameDataProviderNameResultSeeker.keyCustomField" value="${instance.keyCustomField}" />
    </f:entry>
Заведите баг в джире, https://issues.jenkins-ci.org/browse/JENKINS/component/15754.
 
3. 
Сейчас он помечается в тестлинке pass или fail в зависимости от того как прошел кейс с последними тестовыми данны из провайдера, тоесть {"ASDASDasdas-123123211212&^%&^%"}
это корректное поведение для TestNG method name стратегии - при каждом вызове теста с различными данными по имени метода находиться один и тот же тест кейс и он же обновляется. Последнее обновление Вы и видите.
Кстати.ведь в статистике плагина показываются правильные цифры, так?
 
4. даже после исправления стратегии TestNG method name and dataprovider -это Вам не поможет, т.к. эта стратегия не использует значения параметров, а использует имя dataProvider, т.е. validateFieldBase или CampaignData.validateFieldBase .
 
Рекомендую завести improvement для реализации такой стратегии в той же джире. На данный момент, как я понимаю, такое уже возможно - в testng 6.5.1 в testng-results.xml уже сохраняются названия и значения параметров вызовов метода.