Сначала вам нужно получить подходящий клиент соединения со строкой клиента, соответствующей результатам теста.
из 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.
Приветствия