Как успешно опубликовать общий результат теста в сборке VSTS через API?

С целью создания отчетов из внешней тестовой среды в отчет о сборке VSTS — каков минимум, необходимый в определении сборки VSTS, чтобы проверить возможность публикации результатов теста в тестовом прогоне через API?

На данный момент у меня есть минимальное доказательство концепции определения сборки VSTS, содержащее:

  • Тестовые сборки VsTest (запускает один тест MSTest VS просто для достижения 60-секундной задержки с помощью System.Threading.Thread.Sleep(60000);) — Однако мне не требуются тесты Visual Studio. В качестве альтернативы я безуспешно пробовал команду powershell ожидания 60 секунд, чтобы имитировать окно ожидания теста.

Пока работает приведенная выше сборка VSTS, я пытаюсь опубликовать общий «результат теста» с помощью JSON:

 [

 {

    "testCaseTitle": "myTestCaseTitle",

    "automatedTestName": "myAutomatedTestName",

    "priority": 1,

    "outcome": "Passed"

 }

]

К текущему тестовому запуску по адресу:

https://{instance}/DefaultCollection/{project}/_apis/test/runs/{run}/results?api-version={version}

Однако по-прежнему кажется, что во время тестового прогона сборки запуск недоступен в API для публикации новых результатов теста до завершения сборки. И как только он завершится, он также будет недоступен для публикации результатов с ответом сервера:

TestCaseResults не могут быть добавлены или обновлены для тестового прогона, который находится в состоянии Completed.

Итак, каков минимум, необходимый в определении сборки, чтобы открыть действительное окно для публикации общих результатов теста, если это вообще возможно? (И можно ли не указывать конкретный номер {запуска}, ориентируясь на текущий запуск?)


person David    schedule 13.06.2017    source источник
comment
Каков результат моего решения?   -  person starian chen-MSFT    schedule 19.06.2017
comment
Спасибо Старейн, это было полезно. Я обнаружил, что в моем случае необходимо было сначала создать тестовый прогон (используя известный номер сборки) и опубликовать результаты теста.   -  person David    schedule 19.06.2017


Ответы (2)


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

Простые примеры шагов:

  1. Обновление тестового запуска.

JSON-текст:

{
    "state":"InProgress"
}
  1. Добавьте результат теста в тестовый прогон.

JSON-текст:

[
    {
        "testCaseTitle":"TestMethod1",
        "automatedTestName": "UnitTestProject1.UnitTest1.TestMethod1",
        "outcome": "Passed"
    }   
]

Что касается сна потока:

  1. Добавить задачу PowerShell для построения определения
  2. Выберите встроенный скрипт

Скрипт:

Start-Sleep -s 3600

Узел: если вам нужно ждать долго (более 30 минут), вам нужно использовать приватный агент, о настройке приватного агента вы можете прочитать здесь: Развертывание агента в Windows

person starian chen-MSFT    schedule 14.06.2017

Быстрый ответ для публикации результатов внешней среды тестирования в VSTS для сборки продукта, созданной в VSTS:

  1. Определить процесс сборки, который создает продукт

  2. Опубликуйте новый «тестовый прогон» существующей сборки (укажите идентификатор сборки в теле json)

    { "name": "myTestRun", "build": { "id": "629" }, "isAutomated": true, "state": "Ожидание" }

  3. Запустите свой собственный тестовый контроллер, чтобы он выполнял необходимые тесты.

  4. Когда результаты станут доступны на вашем контроллере тестирования, опубликуйте результаты тестирования для созданного ранее прогона, например:

    [ { "testCaseTitle": "myTestCaseTitle", "automatedTestName": "myAutomatedTestName", "priority": 1, "результат": "Пройдено" } ]

    1. Patch update the test run to set state as completed:

тело:

{
"name": "myTestRun",
"state": "Completed",
"comment":"All tests have been run"

}

person David    schedule 19.06.2017