Использование Beanshell для ссылки на параметр, определенный в testng.xml - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь использовать параметр, чтобы определить, какая группа тестов в моем наборе TestNG будет запущена.Для этого мой файл testng.xml в настоящее время выглядит следующим образом.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
    <test name="Test">
        <parameter name="groupToRun" value="${valueFromJenkins}" />
        <method-selectors>
            <method-selector>
                <script language="beanshell"><![CDATA[
       return groups.containsKey(groupToRun);
     ]]></script>
            </method-selector>
        </method-selectors>
        <classes>
            <class name="main.java.CWV_Functional.CWV_Functionals" />
        </classes>
    </test>
</suite> 

Идея состоит в том, что значение groupToRun передается из задания Jenkins, запускающего этот набор тестов.Затем Beanshell считывает параметр, чтобы определить, какую группу следует запустить.

Проблема в том, что я не знаю, как ссылаться на параметр, определенный в тегах параметров файла testng.xml, и не могу найти никакой документации, показывающей, как это сделать.

Кто-нибудь знает, как это сделать?использовать Beanshell для ссылки на параметр, определенный в файле testng.xml?

1 Ответ

0 голосов
/ 24 января 2019

Цитирование документации TestNG из здесь

TestNG определяет следующие переменные для вашего удобства:

  • java.lang.reflect.Method method: текущий метод испытаний.
  • org.testng.ITestNGMethod testngMethod: описание текущего метода испытаний.
  • java.util.Map<String, String> groups: карта групп, к которой относится текущий метод тестирования.

Таким образом, вы просто извлекаете параметры через объект ITestNGMethod.

Вот как ты это делаешь

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="54335160_suite" parallel="false" verbose="2" configfailurepolicy="continue">
  <parameter name="groupToRun" value="foo"/>
  <method-selectors>
    <method-selector>
      <script language="beanshell"><![CDATA[
        grpParameter = testngMethod.getXmlTest().getParameter("groupToRun");
       return groups.containsKey(grpParameter);
     ]]></script>
    </method-selector>
  </method-selectors>
  <test name="54335160_test">
    <classes>
      <class name="com.rationaleemotions.stackoverflow.qn54335160.Qn54335160Sample">
      </class>
    </classes>
  </test>
</suite>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...