ozontech / allure-go

Complete Allure provider in Go which doesn't overload the interface usage
https://t.me/allure_go_chat
Apache License 2.0
317 stars 34 forks source link

Фильтрация тестов в go #5

Closed jayjaytrn closed 2 years ago

jayjaytrn commented 2 years ago

Добрый день, Настраиваем у себя тестопс в связке с go и gitlab, столкнулись с такой проблемой что не работает фильтрация тестов при запуске. Наш пайплайн:

stages:
  - test

variables:
  ALLURE_LAUNCH_NAME: "${CI_PROJECT_NAME} - ${CI_COMMIT_SHORT_SHA}"
  ALLURE_LAUNCH_TAGS: "regular, ${CI_COMMIT_REF_NAME}"
  ALLURE_TESTPLAN_PATH: "./testplan.json"
  ALLURE_RESULTS: "allure-results"

test:
  image: golang:latest
  stage: test
  before_script:
    - wget https://github.com/allure-framework/allurectl/releases/latest/download/allurectl_linux_386 -O /usr/bin/allurectl
    - chmod +x /usr/bin/allurectl

    - allurectl job-run start
    - allurectl job-run plan --output-file ${ALLURE_TESTPLAN_PATH}

  script:
    - mkdir -p allure-results
    - allurectl watch --results ${ALLURE_RESULTS} -- go test -v
  after_script:
    - pkill allurectl

При запуске пайплайна есть строки:

$ allurectl job-run plan --output-file ${ALLURE_TESTPLAN_PATH}
Save test plan for [7] to file [/builds/test-framework-allure-testops/testplan.json]
Save test plan for [7] to file [/builds/test-framework-allure-testops/tests/acl]
Running command:  go [test -v]

Из этого сделал вывод что интеграция настроена корректно и проблема непосредственно в allurectl job-run plan --output-file ${ALLURE_TESTPLAN_PATH} что подтвердил Артем Ерошенко

Просьба взять на доработку

koodeex commented 2 years ago

Добрый!

Подскажите пожалуйста, каков ожидаемый результат?

ALLURE_LAUNCH_TAGS работает для проставления дефолтных тегов

Если Вас интересует фильтрация по build tag, тогда при вызове go test требуется передавать стандартный флаг --tags=...

jayjaytrn commented 2 years ago

Вообще хотелось бы запустить конкретный тест прямо из тестопса, при этом при вызове go test вообще ничего не указывать? Такое возможно? Может быть я не понимаю просто как это должно работать? А еще я сейчас удалил дефолтные теги из всех кроме одного, но при запуске джобы прогнались все тесты

jayjaytrn commented 2 years ago

Вот как в этом видео с презентацией https://youtu.be/F8cY8YN3DiE?t=3707 Тут теги вроде как даже не участвуют, а сами тесты запускаются без всяких флагов, просто в аллюре выбираются нужные тесты и запускается джоба

koodeex commented 2 years ago

Правильно ли я понимаю, что Вы хотите запускать тесты из списка в test-plan.json?

koodeex commented 2 years ago

Если да, то на данный момент мы такую фичу не поддерживаем, но это отличная идея для улучшения, обязательно добавим в течении ближайших двух недель

Не могли бы Вы приложить пример Вашего testplan.json для ускорения решения проблемы?

jayjaytrn commented 2 years ago

Не совсем, хотелось бы просто выбрать нужные тесты из списка кейсов в allure testops и запустить их. Сейчас при этом прогоняются все тесты в директории. Может быть я все таки неверно что то делаю? Приложу скрин: image

Просто я думал что все кейсы которые у нас есть попадают в тест план сюда: image Потом аллюр пробрасывает их в гитлаб и дальше запускаются только они, с помощью какой-то внутренней магии allurectl Я неправильно себе это представляю?

jayjaytrn commented 2 years ago

А test-plan.json у нас в проекте не добавлен. Нужен именно запуск выборочный тестов их allure testops

jayjaytrn commented 2 years ago

Артем для примера кидал вот этот https://github.com/allure-framework/allure-java/blob/master/allure-testng/src/main/java/io/qameta/allure/testng/AllureTestNgTestFilter.java

Ну и я еще раз опишу список шагов который хотелось бы проделать

  1. Заходим в тестопс и открываем тест кейсы
  2. Выбираем нужные нам тест кейсы
  3. Нажимаем на кнопку запуска тестов
  4. Запускается джоба и прогоняются только тесты которые мы отметили
koodeex commented 2 years ago

Понял, возьмем в работу!

koodeex commented 2 years ago

Пока не починим, можно попробовать воркэраунд с группировкой тестов по build tag и по пакетам, передавая флаги --tags и -run соответственно

jayjaytrn commented 2 years ago

А я вообще правильно понимаю что вот в этой строке пайплайна

- allurectl watch --results ${ALLURE_RESULTS} -- go test -v

allurectl будет каким-то образом считывать команду go test и дальше отправлять на запуск только нужные тесты? Просто хочу понять как это работает

koodeex commented 2 years ago

По идее, вот тут выбирается джейсонина

ALLURE_TESTPLAN_PATH: "./testplan.json"

которая формируется на основе выбранных тестов в TestOps, если я правильно понимаю, затем, на этапе сбора тестов, тесты фильтруются на основе этой джейсонины

Но я могу ошибаться, так как до этого вообще не знал, что такая штука есть :)

jayjaytrn commented 2 years ago

Спасибо Вам, а сориентируйте пожалуйста по срокам, у нас триал ещё две недели и нам надо продемонстрировать рабочую версию, чтобы ее могли согласовать

koodeex commented 2 years ago

Постараемся на следующей неделе выкатить релиз так быстро, как возможно :)

jayjaytrn commented 2 years ago

Добрый день! Хотел уточнить можно ли ожидать релиз на этой неделе?

koodeex commented 2 years ago

Добрый! В работе, надеюсь успею доделать до состояния "можно тестировать" уже завтра вечером :)

koodeex commented 2 years ago

@jayjaytrn версия очень сырая (еще будет дорабатываться), есть проблемы с параллельными тестами сейчас, однако, думаю, можно попробовать проверить работу фильтра testplan.json Можем провести сессию тестирования завтра, свяжитесь со мной по почте belomorovich@gmail.com обговорим, как лучше созвониться

koodeex commented 2 years ago

Окей, кажется более менее починил все...
@jayjaytrn , можете проверить по релизу 0.6.0?
пока бета, но думаю основные все штуки должны работать :)

jayjaytrn commented 2 years ago

Добрый день, сейчас попробую

koodeex commented 2 years ago

Looks like issue fixed in v0.6.9 (BETA)

koodeex commented 2 years ago

Add testplan.json support with v0.6.11 release