Необходимо пропустить тестовые случаи во время выполнения в Testng - PullRequest
0 голосов
/ 29 марта 2019

Мне нужно настроить инфраструктуру Selen для чтения тестовых примеров из тестового маршрута, которые нужно запустить, и получить их идентификатор во время выполнения, а затем запустить только эти тестовые случаи.

Но проблема в следующем:

Команда Business Analyst только собирается выбрать тестовые наборы для запуска и перетащить их в раздел тестового прогона тестовой шины, а затем хочет получить пакетный файл, по которому они могут дважды щелкнуть, и селен должен запустить выбранные тестовые примеры.

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

У меня есть несколько файлов testng для разных приложений, но сценарий selenium находится в одной папке проекта.

Это мой пример testng.xml файла

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="false">
  <test name="Test">
    <classes>
      <class name="com.SalesForce.Testone" />
      <class name="com.SalesForce.Testtwo" />
      <class name="com.SalesForce.Testthree" />
    </classes>
  </test>
  <!-- Test -->
</suite>
<!-- Suite -->

иниже приведен мой код для набора командных файлов

 projectLocation=H:\Automation\SF\AutomatedTestCases\usingSelnium\runFromTestRail\CAanzAutomation
 cd %projectLocation% set
 classpath=%projectLocation%\bin;%projectLocation%\resources\* java
 org.testng.TestNG %projectLocation%\testng.xml pause
 APIClient client = new APIClient("https://abc.testrail.io/");
 client.setUser("email id");
 client.setPassword("password");
 JSONObject c = (JSONObject) client.sendGet("get_case/4");
 System.out.println(c.get("id"));

Я могу сохранить идентификатор, полученный из приведенного выше кода, но как передать его для тестирования во время выполнения итогда пропустить тестовые случаи в тестировании, которых нет в моем массиве?

1 Ответ

0 голосов
/ 31 марта 2019

Для этой цели вы можете использовать прослушиватель TestNG.В этом случае лучше всего подойдет либо селектор метода, либо перехватчик метода .Вы можете проверить значение из пользовательской аннотации или имени метода с идентификатором testcase из тестовой шины.

Для простоты предположим, что у вас есть имена методов, заданные как test_<testrailid>.Теперь в слушателе вы можете включить метод, только если имя метода заканчивается идентификаторами, полученными из вызова API.Ниже приведен пример перехватчика.

public List<IMethodInstance> intercept(List<IMethodInstance> methods, ITestContext context) {

  APIClient client = new APIClient("https://abc.testrail.io/");
  client.setUser("email id");
  client.setPassword("password");
  JSONObject c = (JSONObject) client.sendGet("get_case/4");
  String id = "_"+c.get("id");

  List<IMethodInstance> result = new ArrayList<IMethodInstance>();

  for (IMethodInstance m : methods) {
    if (m.getMethod().getMethodName().endsWith(id)) {
      result.add(m);
    }
  }
  return result;
}

Точно так же вы можете использовать селектор метода, реализовав IMethodSelector .Когда вы реализуете селектор метода, вам нужно зарегистрировать его, используя селектор метода вместо слушателя.

...