繁体   English   中英

如何使用Python REST API在Azure DevOps中检索测试结果?

[英]How to retrieve Test Results in Azure DevOps with Python REST API?

如何使用Python REST API从VSTS(Azure DevOps)检索测试结果?

(到目前为止)文档非常清淡,甚至API示例专用回购中的示例都很清澈( https://github.com/Microsoft/azure-devops-python-samples )。

由于某些原因,测试结果不被视为工作项,因此常规的WIQL查询将不起作用。

另外,最好查询给定区域路径的结果。

谢谢

首先,您需要使用与测试结果匹配的客户端字符串来获取正确的连接客户端。

从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)

然后,您可以查看以下所有可用功能: 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) (尽管此功能在min_last_updated_datemax_last_updated_date之间的限制为7天

为了从给定的区域路径中的测试计划中检索所有结果,我使用了以下代码:

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所花费的时间。

干杯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM