Как получить результаты теста в DevOps Azure с помощью Python REST API? - PullRequest
0 голосов
/ 02 ноября 2018

Как получить результаты теста из VSTS (Azure DevOps) с помощью Python REST API?

Документация (на сегодняшний день) очень легкая, и даже примеры в специальном репозитории примеров API легкие (https://github.com/Microsoft/azure-devops-python-samples).

)

По некоторым причинам результаты теста не считаются рабочими элементами, поэтому обычный запрос WIQL не будет работать.

Кроме того, было бы здорово запросить результаты для заданного Путь области.

Спасибо

1 Ответ

0 голосов
/ 02 ноября 2018

Сначала вам нужно получить подходящий клиент соединения со строкой клиента, соответствующей результатам теста.

из vsts.vss_connection import VssConnection из msrest.authentication import BasicAuthentication

token = "hcykwckuhe6vbnigsjs7r3ai2jefsdlkfjslkfj5mxizbtfu6k53j4ia"
team_instance = "https://tfstest.toto.com:8443/tfs/Development/"

credentials = BasicAuthentication("", token)
connection = VssConnection(base_url=team_instance, creds=credentials)

TEST_CLIENT = "vsts.test.v4_1.test_client.TestClient"
test_client = connection.get_client(TEST_CLIENT)

Затем вы можете просмотреть все функции, доступные в: vsts/test/<api_version>/test_client.py"

Интересны следующие функции:

  • def get_test_results(self, project, run_id, details_to_include=None, skip=None, top=None, outcomes=None) (получить результаты теста для прогона на основе фильтров)
  • def get_test_runs(self, project, build_uri=None, owner=None, tmi_run_id=None, plan_id=None, include_run_details=None, automated=None, skip=None, top=None)
  • def query_test_runs(self, project, min_last_updated_date, max_last_updated_date, state=None, plan_ids=None, is_automated=None, publish_context=None, build_ids=None, build_def_ids=None, branch_name=None, release_ids=None, release_def_ids=None, release_env_ids=None, release_env_def_ids=None, run_title=None, top=None, continuation_token=None) (хотя эта функция имеет ограничение в 7 дней между min_last_updated_date и max_last_updated_date

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

tp_query = Wiql(query="""
SELECT
        [System.Id]
FROM workitems
WHERE
        [System.WorkItemType] = 'Test Plan'
        AND [Area Path] UNDER 'Development\MySoftware'
ORDER BY [System.ChangedDate] DESC""")

for plan in wit_client.query_by_wiql(tp_query).work_items:
    print(f"Results for {plan.id}")
    for run in test_client.get_test_runs(my_project, plan_id = plan.id):
        for res in test_client.get_test_results(my_project, run.id):
            tc = res.test_case
            print(f"#{run.id}. {tc.name} ({tc.id}) => {res.outcome} by {res.run_by.display_name} in {res.duration_in_ms}")

Обратите внимание, что результат теста включает следующие атрибуты:

  • duration_in_ms
  • build
  • outcome (строка)
  • associated_bugs
  • run_by (личность)
  • test_case (TestCase)
  • test_case_title (строка)
  • area (AreaPath)
  • Test_run, соответствующий тестовому прогону
  • test_suite
  • test_plan
  • completed_date (объект даты и времени Python)
  • started_date (объект даты и времени Python)
  • configuration

Надеюсь, это поможет другим сэкономить количество часов, потраченных на изучение этого API.

Приветствия

...