JBehave

Test IT позволяет загружать результаты автоматизированных тестов из тестового фреймворка JBehave. Существуют следующие способы интеграции:

Смотрите также: Дополнительные ресурсы.

CLI

Test IT поддерживает загрузку тестов и результатов их выполнения в формате JUnit XML. Для этого необходимо:

  1. Запустить тесты и сгенерировать отчет JUnit XML
  2. Загрузить результаты тестов в Test IT

Запуск тестов и генерация отчета JUnit XML

Вы можете запускать тесты через командную строку или как часть вашей CI/CD системы.

JBehave не поддерживает генерацию JUnit XML отчета. Вы можете воспользоваться нашим пакетом для генерации jbehave-reporter-junitxmlopen in new window.

  1. Для подключения пакета добавьте его в зависимости проекта:

    • Maven:

      <dependency>
          <groupId>ru.testit</groupId>
          <artifactId>jbehave-reporter-junitxml</artifactId>
          <version>LATEST_VERSION</version>
          <scope>compile</scope>
      </dependency>
      
    • Gradle:

      implementation "ru.testit:jbehave-reporter-junitxml:LATEST_VERSION"
      
  2. Добавьте его в конфигурацию JBehave:

    import org.jbehave.core.ConfigurableEmbedder;
    import org.jbehave.core.configuration.Configuration;
    import org.jbehave.core.configuration.MostUsefulConfiguration;
    import org.jbehave.core.embedder.Embedder;
    import org.jbehave.core.embedder.EmbedderControls;
    import org.jbehave.core.embedder.NullEmbedderMonitor;
    import org.jbehave.core.io.LoadFromClasspath;
    import org.jbehave.core.reporters.NullStoryReporter;
    import org.jbehave.core.reporters.StoryReporterBuilder;
    import org.jbehave.core.steps.InjectableStepsFactory;
    import org.jbehave.core.steps.InstanceStepsFactory;
    import org.junit.jupiter.api.Test;
    import org.junit.jupiter.api.io.TempDir;
    import ru.testit.reporter.JunitXmlReporter;
    
    import java.io.File;
    import java.nio.file.Path;
    import java.util.ArrayList;
    import java.util.List;
    
    public class TestStoriesRunner extends ConfigurableEmbedder {
        public Embedder embedder;
        @TempDir
        Path temp;
    
        @Override
        @Test
        public void run() {
            embedder = new Embedder();
            embedder.useEmbedderMonitor(new NullEmbedderMonitor());
            embedder.useEmbedderControls(new EmbedderControls()
                    .doGenerateViewAfterStories(false)
                    .doFailOnStoryTimeout(false)
                    .doBatch(false)
                    .doIgnoreFailureInStories(true)
                    .doIgnoreFailureInView(true)
                    .doVerboseFailures(false)
                    .doVerboseFiltering(false)
            );
            embedder.useConfiguration(configuration());
            embedder.useCandidateSteps(stepsFactory().createCandidateSteps());
    
            File dir = new File("./src/test/resources/stories");
            List<String> stories = new ArrayList<>();
    
            for (File file : dir.listFiles()){
                if ( file.isFile() )
                    stories.add("stories/" + file.getName());
            }
    
            embedder.runStoriesAsPaths(stories);
        }
    
        public Configuration configuration() {
            final JunitXmlReporter reporter = new JunitXmlReporter();
    
            return new MostUsefulConfiguration()
                    .useStoryLoader(new LoadFromClasspath(this.getClass()))
                    .useStoryReporterBuilder(
                            new TestStoryReporterBuilder(temp.toFile())
                                    .withReporters(reporter))
                    .useDefaultStoryReporter(new NullStoryReporter());
        }
    
        public InjectableStepsFactory stepsFactory() {
            return new InstanceStepsFactory(embedder.configuration(), new SampleSteps());
        }
    
        static class TestStoryReporterBuilder extends StoryReporterBuilder {
    
            private final File outputDirectory;
    
            TestStoryReporterBuilder(final File outputDirectory) {
                this.outputDirectory = outputDirectory;
            }
    
            @Override
            public File outputDirectory() {
                return outputDirectory;
            }
        }
    }
    

    После выполнения тестов отчет будет автоматически сгенерирован в директории output.

Загрузка результатов тестов в Test IT

Загрузка осуществляется при помощи Test IT CLI. Утилита распространяется как пакет для Python и устанавливается в системе.

  1. Для установки выполните команду:

    $ pip install testit-cli
    $ testit --help
    
    usage: testit [options]
    [...]
    
  2. Добавьте переменную окружения TMS_TOKEN и выполните команду:

    $ export TMS_TOKEN=<YOUR_TOKEN>
    $ testit results import \
      --url <YOUR_INSTANCE_URL>\
      --project-id 5236eb3f-7c05-46f9-a609-dc0278896464 \
      --configuration-id 15dbb164-c1aa-4cbf-830c-8c01ae14f4fb \
      --testrun-name "JBehave test run" \
      --results output/test-results.xml
    
    • <YOUR_TOKEN> - приватный токен, сгенерированный в вашем профиле Test IT
    • <YOUR_INSTANCE_URL> - адрес вашей системы Test IT, к примеру, https://tms.testit.software/

    Пример выполнения команды
    Collecting log files ...
    Found 3 result file with a total of 7 tests
    Created new testrun (ID: 18725f28-f054-40d6-b30e-b05cf36deaf9)
    Sending test results to Test IT ...
    Uploading: 100%|█████████████████████████████████████████████| 7/7 [00:01<00:00,  3.98it/s]
    Successfully sent test results
    Completed testrun (ID: 18725f28-f054-40d6-b30e-b05cf36deaf9)
    

    Результаты успешно загружены в систему Test IT. Вы также можете воспользоваться адаптером.

Адаптер

Адаптер предоставляет гибкие возможности интеграции и позволяет загружать не только базовую информацию об автотестах, но и другие метаданные (шаги, вложения, ссылки и т.д.).

Для подключения адаптера воспользуйтесь инструкциейopen in new window на GitHub.

Список метаданных, передаваемых адаптером для JBehave
  • WorkItemIds — идентификатор (ID) рабочего элемента, позволяет привязывать автотесты к ручным тестам в Test IT. Получает массив ID ручных тестов.
  • DisplayName — имя автотеста, используемое в Test IT
  • ExternalId — уникальный ID автотеста в Test IT
  • Title — имя автотеста, указанное в его карточке. Если имя не указано, используется имя DisplayName.
  • Description — описание автотеста, указанное в его карточке
  • Labels — теги, указанные в карточке автотеста
  • Links — ссылки, указанные в карточке автотеста
  • Adapter.addLinks — ссылки на результаты автотестов
  • Adapter.addAttachments — вложения, прикрепляемые к результатам автотестов
  • Adapter.addMessage — сообщения о результатах автотестов

Public API

Вы можете загружать тесты и результаты их выполнения с помощью нашего публичного API. Существует два способа загрузки:

  1. Самостоятельно взаимодействовать с API
  2. Использовать готовый API-клиент

Дополнительные ресурсы

Чтобы узнать больше о возможностях интеграции Test IT с другими системами, прочтите наши статьи:

Обновлено: