[英]How to retrieve Test Results in Azure DevOps with Python REST API?
How to retrieve Test Results from VSTS (Azure DevOps) by using Python REST API? 如何使用Python REST API从VSTS(Azure DevOps)检索测试结果?
Documentation is (as of today) very light, and even the examples in the dedicated repo of the API examples are light ( https://github.com/Microsoft/azure-devops-python-samples ). (到目前为止)文档非常清淡,甚至API示例专用回购中的示例都很清澈( https://github.com/Microsoft/azure-devops-python-samples )。
For some reasons, the Test Results are not considered as WorkItems so a regular WIQL query would not work. 由于某些原因,测试结果不被视为工作项,因此常规的WIQL查询将不起作用。
Additionally, it would be great to query the results for a given Area Path. 另外,最好查询给定区域路径的结果。
Thanks 谢谢
First you need to get the proper connection client with the client string that matches the test results. 首先,您需要使用与测试结果匹配的客户端字符串来获取正确的连接客户端。
from vsts.vss_connection import VssConnection from msrest.authentication import BasicAuthentication 从vsts.vss_connection导入从msrest.authentication导入VssConnection 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)
Then, you can have a look at all the functions available in: vsts/test/<api_version>/test_client.py"
然后,您可以查看以下所有可用功能:
vsts/test/<api_version>/test_client.py"
The following functions look interesting: 以下功能看起来很有趣:
def get_test_results(self, project, run_id, details_to_include=None, skip=None, top=None, outcomes=None)
(Get Test Results for a run based on filters) 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)
(although this function has a limitation of 7 days range between min_last_updated_date
and max_last_updated_date
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)
(尽管此功能在min_last_updated_date
和max_last_updated_date
之间的限制为7天 To retrieve all the results from the Test Plans in a given Area Path, I have used the following code: 为了从给定的区域路径中的测试计划中检索所有结果,我使用了以下代码:
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}")
Note that a test result includes the following attributes: 请注意,测试结果包括以下属性:
duration_in_ms
build
outcome
(string) outcome
(字符串) associated_bugs
run_by
(Identity) run_by
(身份) test_case
(TestCase) test_case
(TestCase) test_case_title
(string) test_case_title
(字符串) area
(AreaPath) area
(AreaPath) Test_run
, corresponding to the test run Test_run
,对应于测试运行 test_suite
test_plan
completed_date
(Python datetime object) completed_date
(Python日期时间对象) started_date
( Python datetime object) started_date
(Python日期时间对象) configuration
Hope it can help others save the number of hours I spent exploring this API. 希望它可以帮助其他人节省我探索此API所花费的时间。
Cheers 干杯
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.