Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

показать результаты авто тестов в JIRA как test result тест кейса

java
webdriver
jira
Теги: #<Tag:0x00007f7b6d6fdcc8> #<Tag:0x00007f7b6d6fdb88> #<Tag:0x00007f7b6d6fda48>

(AveT) #1

Здравствуйте!
Есть проект авто-тестов Selenium + Java. Включается каждую ночь, имеет свой собственный html репорт.
И есть JIRA в которой куча мануальных тестов. Так вот хочется сделать так , чтобы после ночного прогона результат шел в JIRA и под соответствующим тест кейсом оставлял тест резалт.
Думается мне что нужно использовать JIRA REST API, но не подскажете ли ресурс где такое расписано поподробней, а то одной документации JIRA REST API не хватает для сбора общей картины.


(Alexandr D.) #2

Не пробовали в саппорт жиры обратиться по данному вопросу?


(Евгений) #3

(Sergey Korol) #4

Вот пример простого клиента, который умеет вытягивать статусы:

dependencies {
    compile("com.atlassian.jira:jira-rest-java-client-core:${jiraVersion}",
            "com.atlassian.fugue:fugue:${fugueVersion}",
            "io.vavr:vavr:${vavrVersion}",
            "one.util:streamex${streamexVersion}",
            "org.projectlombok:lombok:${lombokVersion}"
    )
}
public class JiraClient {

    private final JiraRestClient client;
    
    public JiraClient() {
        val factory = new AsynchronousJiraRestClientFactory();
        this.client = Try.of(() -> factory.createWithBasicAuthentication(new URI(JIRA_URL), JIRA_USERNAME, JIRA_PASSWORD))
            .getOrElseThrow(ex -> new IllegalArgumentException("Unable to connect to Jira", ex));
    }

    public Optional<IssueStatus> getIssueStatus(final String id) {
        return IssueStatus.of(getIssue(id).getStatus().getName());
    }

    public Issue getIssue(final String id) {
        return client.getIssueClient().getIssue(id).claim();
    }

    public void disconnect() {
        ofNullable(client).ifPresent(clt -> Try.run(clt::close));
    }

    @Getter
    @RequiredArgsConstructor
    public enum IssueStatus {
        ToDo("To Do"),
        InProgress("In Progress"),
        ReadyForQA("Ready for QA"),
        QAReview("QA Review"),
        Resolved("Resolved");
   
        private final String name;

        public static Optional<IssueStatus> of(final String name) {
            return StreamEx.of(IssueStatus.values())
                    .findFirst(val -> val.getName().equals(name));
        }
    }
}

Дальше уже - дело техники. API есть, отправная точка есть, дерзайте. :wink:


(AveT) #5

Спасибо, посмотрим как получится :slight_smile:


(Павел) #6

Вот на эту штуку можете попробовать посмотреть:
https://confluence.xpand-it.com/display/XRAY


(Dmitry Bogatko) #7

а что означает “И есть JIRA в которой куча мануальных тестов.”? Какой плагин для хранения тестов используется? Из самых популярных это как правило Xray или Zephyr. В зависимости от того что у вас нужно воспользоваться их API. Например, https://confluence.xpand-it.com/display/XRAY/REST+API
Для работы с самой Jira обратите внимание сюда https://bitbucket.org/atlassian/jira-rest-java-client/src/master/


(AveT) #8

не используется никакой дополнительный плагин. В самой JiRA в каждом юзер стори добавлены мануальные тест кайсы, по которым стори тестируется. А потом при наличии времени эти тест кейсы автоматизируются, то есть работаем с самой JIRA


#9

Пользовался Xray, там есть такой функционал через API


(Bohdan Kuso) #11

Уточните пожалуйста, как выглядят тест кейсы? Это сущность Jira (вроде Bug, UserStory и т.д), это комментарий, или это sub-сущность (вроде Sub-task)?


(Bohdan Kuso) #12

В случае, если это отдельная сущность Jira, у которой есть свой статус, и прочие атрибуты, можно и нужно использовать АПИ Jira (https://docs.atlassian.com/software/jira/docs/api/REST/7.12.0/?_ga=2.91280921.285118757.1538990767-1297167204.1515063943). Для тестов пишутся After методы, которые проставляют статус, или, если хорошо знаете TestNG, можно написать listener класс, который слушая выполнение тестов будет по апи проставлять им статус в зависимости от результата. Лично я за последний вариант. Для этого нужны IAnnotationTransformer и ITestListener интерфейсы TestNG. После написания лиснера включаете его в свой testNg.xml, а тестовые метды маркируете @Test(testName = “issueKey”).


(Vatslau) #13

Вероятно это Зефир тест кейсы?
тогда вам нужно ZAPI