Перейти к содержимому

Dmitry2017

Регистрация: 20 ноя 2017
Offline Активность: 26 окт 2020 11:29
-----

Мои темы

Не работает группировка тестов в Java+TestNG

30 октября 2019 - 10:10

Коллеги, приветствую!

Кто-нибудь сталкивался с проблемой при попытке запустить группу TestNG-тестов?

Написал такой конфиг (его и пытаюсь запустить):

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite1" verbose="1" >
    <test name="MessagePublishingTests" >
        <groups>
            <run>
                <include name="au"></include>
            </run>
        </groups>
        <packages>
            <package name="ru.qa.test.bankrot.tests.group" />
        </packages>
    </test>
</suite> 

Тесты выглядят так:

public class MessagePublishingTestsGroup extends TestBase {
  
  @Test(groups = {"au"})
  @Description("Опубликовать \"Сообщение 1\"")
  public void testMessageArbitralDecree() throws InterruptedException {
    app.getMessagesListPage().clickAddMessage();  
    ....
  }

  @Test(groups = { "au", "otfl"})
  @Description("Опубликовать \"Иное\"")
  public void testMessageOther() throws InterruptedException {
    app.getMessagesListPage().clickAddMessage();
    ...
  }

  @Test(groups = {"otfl"})
  @Description("Опубликовать \"ранее опубликованное\"")
  public void testMessageAnnul() throws InterruptedException {
    app.getMessagesListPage().clickAddMessage();
    ...
  }

Структура пакета такая:

Прикрепленный файл  Структура пакета.jpg   36,43К   0 Количество загрузок:

 

Первый же тест падает с

java.lang.NullPointerException
at ru.qa.test.bankrot.tests.MyTestListener.onTestFailure(MyTestListener.java:24)
at org.testng.internal.TestListenerHelper.runTestListeners(TestListenerHelper.java:67)
at org.testng.internal.Invoker.runTestListeners(Invoker.java:1389)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1042)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
at org.testng.TestNG.runSuites(TestNG.java:1049)
at org.testng.TestNG.run(TestNG.java:1017)
at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:73)
at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)
 
Process finished with exit code -1073741819 (0xC0000005)
 
Не подскажите, что сделать, чтобы тесты заработали?

 


Интеграция Test Rail с TestNG-тестами

23 октября 2019 - 15:57

Коллеги, добровольного времени суток!

Кто-нибудь в своей практике решал вопрос интеграции прогона в Test Rail с автотестами. (Результаты автотестов должны автоматически пролиться в результаты прогона).

Нашел статью на эту тему: https://testarenablo...tion-framework/

Вроде описаны все необходимые методы (createTestRailInstance(), setProjectSuiteId, createRun(), addResult и т.д.).

Но не понимаю как их прикрутить конкретно к своим автотестам.

Кому-нибудь удалось реализовать на практике такой подход?

Или какой-либо альтернативный?

 


Конвертация JSON в HashMap (язык Java)

15 октября 2019 - 17:04

Коллеги, приветствую!

Проблема в следующем. Имеется конфиг в формате JSON.

Задача десериализовать конфиг-параметры и использовать их в автотестах.

JSON при этом такой:

{
  "AU": {
    "login": "Anisimov",
    "password": "ZTd9Pn"
  },
  "OTUR": {
    "login": "interfax_ot_ur",
    "password": "123456"
  }
}

Код, которым пытаюсь решить задачу (с помощью jackson) такой:

import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.*;
import java.util.*;

public class MyHashMapJsonTest {

public static void main(String[] args) throws IOException {

  BufferedReader reader = new BufferedReader(new FileReader(new File("config/config2.json")));
  HashMap<String, List<String>> result = new ObjectMapper().readValue(reader, HashMap.class);
   
  List<String> currentRole = (List<String>) result.get("AU");
  System.out.println(currentRole); 

На предпоследней строке код падает с исключением  Exception in thread "main" java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to java.util.List

Как думаете, что здесь не так?


Установка System Property для тестов в build.gradle

12 октября 2019 - 14:49

Коллеги, здравствуйте!

Я впервые столкнулся с задачей работы с JSON-конфиг. файлом.

Есть такой конфиг в формате JSON (вид привожу сокращенный):

{
  "conturs": {
    "test": [
      {
        "baseurl": "http://bank.devel.ifr/",
        "AU": {
          "login": "Anisimov",
          "password": "123456"
        },
        "OTUR": {
          "login": "interfax_ot_ur",
          "password": "123456"
        }
      }
    ]
  }
} 

Я научился читать в build.gradle параметры из этого JSON:

task test1(type: Test) {
    useTestNG(){
        suites 'src/test/resources/testng-message-AU.xml'
    }
    if (project.hasProperty('role')) {
        systemProperty 'role', "${role}" 
        if("AU".equals(System.getProperty("role"))) {
            doLast {
                def jsonFile = file('config/config.json')
                def parsedJson = new groovy.json.JsonSlurper().parseText(jsonFile.text)
                String login = parsedJson.conturs.test.AU.login
                String password = parsedJson.conturs.test.AU.password
                println login
                println password
            }
        }
    }
} 

Т.е. из командной строки запуска выбирается роль (${role}). В данном примере это роль "AU".

Далее считываю логин и пароль из конфига для данной роли.

Но не получается передать найденный логопас через System Property в фикструру тестов.

Например, пробовал дописать в данную task функцию 

System.properties.'login'=login

Однако System.getProperty("login") в фикстуре неизменно получает null.

Коллеги, сталкивались ли вы с подобной задачей? Подскажите, пожалуйста, - как решали?

Или может быть вообще какой-то другой путь есть для работы с JSON-конфигом.

 


Запись видео при выполнении теста (TestNG)

30 сентября 2019 - 17:32

Коллеги, здравствуйте!

Пытаюсь прикрутить к своему тестовому фреймворку (Selenium + TestNG + Gradle) запись видео.

Нашел (из курса Алексей Баранцева «Эффективное использование TestNG и JUnit») реализацию VideoListener.

 

https://github.com/b...ricky4/sample34

 

Проблема в том, что не знаю, как в VideoCreator обеспечить необходимые импорты:

import com.xuggle.mediatool.IMediaWriter;
import com.xuggle.mediatool.ToolFactory;

 

Возможно просто не хватает знаний по Gradle. (В учебном курсе применяется Maven).

В Maven это решается так:

 

<repositories>   <repository>   <id>xuggle repo</id>   <url>http://xuggle.google...o/share/java/</url>   </repository> </repositories>  

 

Кто-нибудь решал подобную проблему в своей практике?