Как связать результаты тестирования конвейера Azure с тестовыми случаями

#azure #junit #azure-devops #azure-pipelines #pytest

Вопрос:

Я пытаюсь связать результаты автоматизированного тестирования из задачи конвейера PublishTestResults с тестовыми случаями в azure. Таким образом, я могу просматривать историю результатов теста через тестовый случай

Фон

Эти тесты автоматизированы с помощью pytest и генерируют XML-отчет Junit для Azure. Пожалуйста, поправьте меня, если я ошибаюсь, но, судя по тому, что я обнаружил, нет аргумента, опции или параметра, в которых azure могла бы автоматически связывать эти тестовые случаи. Кроме того, формат XML, который ожидает Azure, не содержит атрибута для идентификатора. https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/test/publish-test-results?view=azure-devopsamp;tabs=trx,yaml

Я не могу связать эти тесты с помощью visual studio, так как pytest не поддерживается. https://docs.microsoft.com/en-us/azure/devops/test/associate-automated-test-with-test-case?view=azure-devops

Проблема

Я начал использовать API Azure REST и api python azure devops, https://github.com/microsoft/azure-devops-python-api . Получил свой идентификатор сборки, идентификатор тестового запуска, связанный со сборкой конвейера, тестовый запуск из идентификатора, идентификатор тестового набора и идентификатор тестовой точки. Выполнение теста GET возвращает результат теста и фокусируется на конкретном объекте ответа.

 "testCase": {
    "name": "test title"
},
 

Однако, когда я выполняю тест на ИСПРАВЛЕНИЕ, чтобы обновить результат теста с помощью

 "testCase": {
    "id": "5688",
    "name": "test title"
},
"testPoint": {
    "id": "296"
},

 

Он не обновляется и остается прежним. Я могу подтвердить, что могу обновлять другие поля, и я также вижу последние обновления даты. Ссылаясь на этот звонок. https://docs.microsoft.com/en-us/rest/api/azure/devops/test/results/update?view=azure-devops-rest-6.0

Я попробовал выполнить тест вручную и смог добавить результаты теста с идентификаторами тестового случая. Однако после этого я не смог отредактировать идентификатор тестового случая. Я попытался добавить результат теста с идентификаторами тестового случая в свои автоматические тестовые запуски, но это не сработало

У кого-нибудь есть какие-либо идеи о том, что я делаю неправильно, или о том, как лучше связать результаты тестов с тестовыми случаями в Azure?

Ответ №1:

Я разместил сообщение на форуме сообщества разработчиков Visual Studio.

Нам в значительной степени приходится проходить маршрут «Обновление рабочего элемента». Чтобы связать результаты автоматизированного тестирования с тестовым случаем, я добавил ссылку на результат теста:

 [
    {
        "op": "add",
        "path": "/relations/-",
        "value": {
            "rel": "ArtifactLink",
            "url": "vstfs:///TestManagement/TcmResult/1234.100000",
            "attributes": {
                "name": "Test Result"
            }
        }
    }
]
 

Это добавит ссылку из тестового примера, которая направит вас на недопустимый URL-адрес, поэтому вы просто попадете на страницу Сводки сборки. Не очень хорошо, так как он отсутствует /results в URL-адресе:

 https://dev.azure.com/{organization}/{project}/_build?buildId=1122amp;view=ms.vss-test-web.build-test-results-tabamp;runId=1234amp;resultId=100000amp;paneView=debug
 

Но помимо этого, это работает.