如何使用Python调用TFS REST API获取测试计划信息?
获取Azure DevOps测试计划信息的实现思路
首先先给你提个小细节:你现有获取项目名称的代码里,循环部分有点小问题——names.append(projects)应该改成names.append(projects_names),不然你添加的是整个项目对象列表,而不是单个项目名称~
接下来回到你要解决的测试计划获取问题,其实和获取项目名称的逻辑一脉相承,只是要用到测试计划专属的客户端,具体步骤如下:
1. 核心逻辑梳理
测试计划是隶属于具体项目的资源,所以整体流程和获取项目类似:建立连接 → 获取对应功能的客户端 → 调用API方法获取数据 → 提取需要的信息。
2. 完整实现代码
结合你现有的项目名称获取逻辑,我整理了一个能同时获取项目和对应测试计划的示例:
from azure.devops.connection import Connection from msrest.authentication import BasicAuthentication def get_projects_and_connection(token, org_url): # 创建Azure DevOps连接 credentials = BasicAuthentication('', token) connection = Connection(base_url=org_url, creds=credentials) # 获取核心客户端并拉取项目列表 core_client = connection.clients.get_core_client() projects = core_client.get_projects() # 整理项目的名称和ID(ID用于后续获取测试计划更稳定) project_list = [{"name": p.name, "id": p.id} for p in projects] return project_list, connection def get_test_plans(connection, project_id): # 获取测试计划专属客户端 test_plan_client = connection.clients.get_test_plan_client() # 拉取指定项目下的活跃测试计划,可通过state_filter指定状态(Active/Inactive/All) test_plans = test_plan_client.get_test_plans(project=project_id, state_filter="Active") # 提取测试计划的关键信息 plan_details = [] for plan in test_plans: plan_details.append({ "name": plan.name, "id": plan.id, "description": plan.description or "无描述", "created_by": plan.created_by.display_name, "created_date": plan.created_date.strftime("%Y-%m-%d %H:%M:%S") }) return plan_details if __name__ == "__main__": # 替换成你的PAT和组织URL personal_access_token = "你的个人访问令牌" organization_url = "https://dev.azure.com/你的组织名" # 获取项目列表和连接对象 projects, conn = get_projects_and_connection(personal_access_token, organization_url) # 遍历每个项目获取测试计划 for proj in projects: print(f"\n=== 项目: {proj['name']} 的测试计划 ===") plans = get_test_plans(conn, proj['id']) if not plans: print("暂无活跃测试计划") continue for idx, plan in enumerate(plans, 1): print(f"{idx}. 名称: {plan['name']}") print(f" ID: {plan['id']}") print(f" 创建人: {plan['created_by']}") print(f" 创建时间: {plan['created_date']}") print(f" 描述: {plan['description']}")
关键注意事项
- PAT权限:你的个人访问令牌必须勾选Test Plan下的Read权限,否则会返回权限不足的错误,生成PAT时记得在权限列表里找到对应项勾选。
- 参数灵活性:
get_test_plans方法支持分页参数(top/skip),如果项目下测试计划数量很多,可以用这两个参数做分页查询,避免一次性拉取过多数据。 - 项目标识选择:用项目ID代替名称作为参数更稳定,避免出现项目名称重复导致的查询错误。
这样应该就能顺利获取到测试计划的信息啦,如果遇到具体报错或者需要更细分的测试计划数据(比如测试套件、测试用例),可以再补充说明~
内容的提问来源于stack exchange,提问作者Trerik
相关产品推荐
相关产品推荐

