VSTS Test, JUnit и VSTS Rest API

Примечание: имейте в виду, что я никогда не работал с VSTS Test, поэтому некоторые из моих комментариев могут быть неправильными. Я много работал с остальными VSTS.

У меня есть задача опубликовать XML с результатами теста JUnit в онлайн-тесте VSTS:  введите описание изображения здесь

Мои тесты выполняются в контейнере Docker Ubuntu, поэтому я хочу использовать VSTS rest API для их публикации. Вот остальная документация по API:

https://docs.microsoft.com/en-us/rest/api/vsts/test/?view=vsts-rest-5.0.

POST https://{accountName}.visualstudio.com/{project}/_apis/test/Runs/{runId}/results?api-version=5.0-preview.5

Что отлично работает, но пример тела POST - это json:

[
 {
  "testCaseTitle": "VerifyWebsiteTheme",
  "automatedTestName": 
  "FabrikamFiber.WebSite.TestClass.VerifyWebsiteTheme",
  "priority": 1,
  "outcome": "Passed"
 },
 {
  "testCaseTitle": "VerifyWebsiteLinks",
  "automatedTestName": 
  "FabrikamFiber.WebSite.TestClass.VerifyWebsiteLinks",
  "priority": 2,
  "outcome": "Failed",
  "associatedBugs": [
  {
    "id": 30
  }
]

} ]

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

<?xml version="1.0" encoding="utf-8"?>
<testsuite errors="10" failures="0" name="pytest" skips="12" tests="53" time="16.073">    
  <testcase classname="tests.test_api" file="tests/test_api.py" line="5" name="test_GETNotFound" time="0.4054398536682129"></testcase>    
  <testcase classname="tests.test_api" file="tests/test_api.py" line="10" name="test_POSTBadRequest[]" time="0.41185760498046875"></testcase>
  <testcase classname="tests.test_api" file="tests/test_api.py" line="10" name="test_POSTBadRequest[req1]" time="0.48476719856262207"></testcase>
  <testcase classname="tests.test_api" file="tests/test_api.py" line="10" name="test_POSTBadRequest[{}]" time="0.44095635414123535"></testcase>
  <testcase classname="tests.test_api" file="tests/test_api.py" line="10" name="test_POSTBadRequest[TEST]" time="0.4718012809753418"></testcase>
  <testcase classname="tests.test_azureFileService" file="tests/test_azureFileService.py" line="0" name="test_readFilesDirs" time="0.22459125518798828"></testcase>
</testsuite>

Я понятия не имею, как получить из XML-файла JUnit желаемый способ сделать это с помощью VSTS Rest API.

Хотелось бы получить руководство.

Благодарность


person RuSs    schedule 04.07.2018    source источник


Ответы (1)


Вариант 1. Скопируйте результаты теста из контейнера и используйте задачу Publish Test Results, которая может анализировать результаты теста XML в формате JUnit. docker cp containerName:/path/to/testresults.xml ./testresults.xml должен помочь.

Вариант 2. Напишите простую программу для анализа результатов теста и вывода документа JSON, а затем запустите ее в своем контейнере.

Я бы сказал, что вариант 1 лучше, но это только мое мнение. Я сделал именно это с результатами тестов других инструментов.

person Daniel Mann    schedule 05.07.2018
comment
спасибо за советы. Я выбрал вариант 11 еще до того, как прочитал ваш комментарий. Отсутствие уверенности в Linux мешало мне попытаться использовать задачу «Опубликовать результаты теста», поскольку я не мог правильно определить синтаксис пути. Теперь он у меня работает, и он отлично работает. Спасибо - person RuSs; 05.07.2018