根据查询条件获取测试报告列表 - ListTestReportsByCondition
功能介绍
此接口用于根据查询条件获取测试报告列表,同页面 测试 -> 测试质量评估 -> 右侧筛选报告或搜索报告名称 -> 下方展示报告列表
调用方法
请参见如何调用API。
URI
GET /testreport/v4/{project_id}/test-reports
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| project_id | 是 | String | 参数解释: 项目UUID,项目唯一标识。获取方式请参见获取项目ID 约束限制: 不涉及 取值范围: 长度等于32位,包含大小写字母、数字 默认取值: 不涉及 |
请求参数
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| X-Auth-Token | 是 | String | 参数解释: 用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 约束限制: 不涉及 取值范围: 字符串长度不少于1个字符,不超过100000个字符 默认取值: 不涉及 |
响应参数
状态码:200
| 参数 | 参数类型 | 描述 |
|---|---|---|
| total | Integer | 参数解释 总数 取值范围 不小于1的正整数 |
| page_no | Integer | 参数解释 当前页码 取值范围 大于0且小于100的正整数 |
| page_size | Integer | 参数解释 分页大小 取值范围 大于零且小于20000的正整数 |
| value | Array of TestReportVo objects | 参数解释 测试报告列表数据,数组内每个TestReportVo对象代表一个测试报告,包含测试报告名称、创建人、测试结论等信息 取值范围 不涉及 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| uri | String | 参数解释 测试报告Uri 取值范围 11-34位字母、数字组成的字符串 |
| name | String | 参数解释 测试报告名称 取值范围 长度小于128个字符的字符串 |
| creator | String | 参数解释 创建人ID 取值范围 长度小于128个字符的字符串 |
| updator | String | 参数解释 修改人ID 取值范围 长度小于128个字符的字符串 |
| version_uri | String | 参数解释 测试计划Uri 取值范围 11-34位字母、数字组成的字符串 |
| branch_uri | String | 参数解释 分支Uri 取值范围 11-34位字母、数字组成的字符串 |
| version_name | String | 参数解释 测试计划名称 取值范围 不涉及 |
| testPlan_uri | String | 参数解释 测试计划URI,标识测试报告数据来源的测试计划 取值范围 不涉及 |
| testPlan_name | String | 参数解释 测试计划名称 取值范围 不涉及 |
| branch_name | String | 参数解释 分支名称 取值范围 不涉及 |
| test_conclusion | String | 参数解释 测试结论 取值范围 不涉及 |
| test_conclusion_details | String | 参数解释 测试结论描述 取值范围 不涉及 |
| defect_resolution_rate | String | 参数解释 缺陷解决率,单位:百分比% 取值范围 不涉及 |
| defect_resolution_score | String | 参数解释 缺陷解决分数 取值范围 不涉及 |
| case_execution_rate | String | 参数解释 用例执行率,单位:百分比% 取值范围 不涉及 |
| case_execution_score | String | 参数解释 用例执行分数 取值范围 不涉及 |
| case_pass_rate | String | 参数解释 用例通过率,单位:百分比% 取值范围 不涉及 |
| case_pass_score | String | 参数解释 用例通过分数 取值范围 不涉及 |
| issue_pass_rate | String | 参数解释 需求通过率,单位:百分比% 取值范围 不涉及 |
| issue_pass_score | String | 参数解释 需求通过分数 取值范围 不涉及 |
| issue_coverage_rate | String | 参数解释 需求覆盖率,单位:百分比% 取值范围 不涉及 |
| issue_coverage_score | String | 参数解释 需求覆盖分数 取值范围 不涉及 |
| project_residual_defect_index | String | 参数解释 项目总遗留DI(Defect Index缺陷指数) 取值范围 不涉及 |
| iterator_residual_defect_index | String | 参数解释 计划新增DI(Defect Index缺陷指数) 取值范围 不涉及 |
| case_automation_details | CaseAutomationDetailsVo object | 参数解释 用例自动化信息 取值范围 不涉及 |
| case_validity_ratio | String | 参数解释 用例有效性比例,单位:百分比% 取值范围 不涉及 |
| issue_details | IssuePassDetailsVo object | 参数解释 需求信息 取值范围 不涉及 |
| case_details | Array of NameAndValueVo objects | 参数解释 用例通过情况,数组内每个NameAndValueVo对象包含名称和值 取值范围 不涉及 |
| defect_details_by_severity | Array of IdAndNameAndValueVo objects | 参数解释 缺陷严重程度分布,数组内每个IdAndNameAndValueVo对象包含ID、名称和值 取值范围 不涉及 |
| defect_details_by_module | Array of IdAndNameAndValueVo objects | 参数解释 缺陷按照模块分布情况,数组内每个IdAndNameAndValueVo对象包含ID、名称和值 取值范围 不涉及 |
| case_pass_rate_by_test_type | Array of DetailTestTypeCasePassRateVo objects | 参数解释 每个测试类型的用例通过率,数组内每个DetailTestTypeCasePassRateVo对象包含测试类型和用例通过率 取值范围 不涉及 |
| test_report_custom_report_detail | Array of CustomReportListVo objects | 参数解释 测试报告自定义报告详情,数组内每个CustomReportListVo对象包含报表ID、报表名称、过滤信息等 取值范围 不涉及 |
| create_time | String | 参数解释 创建时间,UTC时间格式yyyy-MM-ddTHH:mm:ssZ 取值范围 不涉及 |
| create_timestamp | Long | 参数解释 创建时间戳,单位为毫秒 取值范围 不涉及 |
| creator_name | String | 参数解释 创建人名 取值范围 不涉及 |
| reviewer | String | 参数解释 评审人ID 取值范围 不涉及 |
| reviewer_name | Array of strings | 参数解释 评审人名称列表,数组内每个元素为评审人名称 取值范围 不涉及 |
| update_time | String | 参数解释 修改时间,UTC时间格式yyyy-MM-ddTHH:mm:ssZ 取值范围 不涉及 |
| update_timestamp | Long | 参数解释 修改时间戳,单位为毫秒 取值范围 不涉及 |
| updator_name | String | 参数解释 修改人名 取值范围 不涉及 |
| project_id | String | 参数解释 项目UUID,项目唯一标识,固定长度32位字符(字母和数字)。获取方式请参见获取项目ID 取值范围 32位字符(字母和数字) |
| risk_analysis | String | 参数解释 风险分析 取值范围 不涉及 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| case_automation_rate | String | 参数解释 用例自动化率,单位:百分比% 取值范围 不涉及 |
| service_type_number_list | Array of NameAndValueVo objects | 参数解释 服务类型对应的用例数目,数组内每个NameAndValueVo对象包含名称和值 取值范围 不涉及 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| testing | Integer | 参数解释 统计测试中的需求 取值范围 无 |
| finished | Integer | 参数解释 统计已完成的需求 取值范围 无 |
| not_tested | Integer | 参数解释 统计未完成的需求 取值范围 无 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| name | String | 参数解释 名称,如缺陷重要程度名称或用例执行结果名称 取值范围 不涉及 |
| value | Integer | 参数解释 对应名称的数目 取值范围 大于等于0 |
| children | Array of children objects | 参数解释 子节点,数组内每个元素包含名称、值和标记值 取值范围 不涉及 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| name | String | 参数解释 名称 取值范围 不涉及 |
| value | Integer | 参数解释 对应名称的数目 取值范围 大于等于0 |
| tag_value | Integer | 参数解释 标记值,与value的区别在于标识不同维度的统计数值 取值范围 大于等于0 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| name | String | 参数解释 名称 取值范围 不涉及 |
| value | Integer | 参数解释 值 取值范围 无 |
| id | String | 参数解释 id 取值范围 不涉及 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| test_type | Integer | 参数解释: 测试类型 取值范围: |
| case_pass_rate | String | 参数解释 用例通过率,单位:百分比% 取值范围 不涉及 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| id | String | 参数解释: 报表id 取值范围: 不涉及 |
| name | String | 参数解释: 报表名称 取值范围: 不涉及 |
| filter | ReportFilter object | 参数解释 过滤信息 取值范围 不涉及 |
| workpiece_type | String | 参数解释 工件类型 取值范围 |
| analysis_dimension | String | 参数解释 分析维度 取值范围 不涉及 |
| compare_dimension | String | 参数解释 对比维度 取值范围 不涉及 |
| chart_data | Array of ReportChartDataVo objects | 参数解释 报表数据,数组内每个ReportChartDataVo对象包含报表ID、报表名称、分析维度数据等 取值范围 不涉及 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| creatorIds | String | 参数解释 创建人 取值范围 不涉及 |
| ownerIds | String | 参数解释 所属人 取值范围 不涉及 |
| ranks | String | 参数解释 级别 取值范围 不涉及 |
| releaseIds | String | 参数解释 发布版本ID 取值范围 不涉及 |
| status | String | 参数解释: 状态 取值范围: |
| moduleIds | String | 参数解释 模块ID 取值范围 不涉及 |
| results | String | 参数解释 结果 取值范围 不涉及 |
| labelIds | String | 参数解释 标签 取值范围 不涉及 |
| startTime | String | 参数解释 开始时间,UTC时间格式yyyy-MM-dd HH:mm:ss 取值范围 不涉及 |
| endTime | String | 参数解释 结束时间,UTC时间格式yyyy-MM-dd HH:mm:ss 取值范围 不涉及 |
| isAssociateIssue | String | 参数解释 是否关联需求 取值范围 不涉及 |
| featureUris | String | 参数解释 目录uris 取值范围 数组元素个数不超过1000 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| id | String | 参数解释 报表id 取值范围 不涉及 |
| name | String | 参数解释 报表名称 取值范围 不涉及 |
| analyze_dim | ReportDimVo object | 参数解释 分析维度数据,ReportDimVo对象包含ID、名称和值 取值范围 不涉及 |
| compare_dim | Array of ReportDimVo objects | 参数解释 对比维度数据,数组内每个ReportDimVo对象包含ID、名称和值 取值范围 不涉及 |
| 参数 | 参数类型 | 描述 |
|---|---|---|
| id | String | 参数解释 id 取值范围 不涉及 |
| name | String | 参数解释 名称 取值范围 不涉及 |
| value | Integer | 参数解释 值 取值范围 不涉及 |
状态码:400
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_code | String | 参数解释: 接口调用失败错误码 取值范围: 不涉及 |
| error_msg | String | 参数解释: 接口调用失败错误信息 取值范围: 不涉及 |
状态码:401
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_code | String | 参数解释: 接口调用失败错误码 取值范围: 不涉及 |
| error_msg | String | 参数解释: 接口调用失败错误信息 取值范围: 不涉及 |
状态码:404
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_code | String | 参数解释: 接口调用失败错误码 取值范围: 不涉及 |
| error_msg | String | 参数解释: 接口调用失败错误信息 取值范围: 不涉及 |
状态码:500
| 参数 | 参数类型 | 描述 |
|---|---|---|
| error_code | String | 参数解释: 接口调用失败错误码 取值范围: 不涉及 |
| error_msg | String | 参数解释: 接口调用失败错误信息 取值范围: 不涉及 |
请求示例
根据查询条件获取测试报告列表
get https://{endpoint}/v4/9b26f58ec29943f681804a6628779a23/test-reports?key_word=xxx&own=true&page_no=1&page_size=10 响应示例
状态码:200
{
"total" : 2,
"page_no" : 1,
"value" : [ {
"creator" : "a17801c5d15f46e28112eec8a880683d",
"branch_uri" : "v90200010rt2rcv3",
"create_time" : "2025-10-15 19:14:38",
"updator_name" : "wangluodan1",
"defect_details_by_module" : [ ],
"uri" : "v90900010rtdlmdd",
"version_uri" : "v90200010rt417hp",
"update_time" : "2025-10-15 19:16:28",
"version_name" : "Plan01",
"create_timestamp" : 1760526878000,
"update_timestamp" : 1760526988000,
"defect_details_by_severity" : [ ],
"branch_name" : "基线",
"name" : "223423221",
"test_conclusion" : "",
"updator" : "a17801c5d15f46e28112eec8a880683d",
"creator_name" : "wangluodan1",
"test_conclusion_details" : "22"
}, {
"creator" : "a17801c5d15f46e28112eec8a880683d",
"branch_uri" : "v90200010rt2rcv3",
"create_time" : "2025-10-15 16:52:50",
"defect_details_by_module" : [ ],
"uri" : "v90800010rt5i1ic",
"version_uri" : "v90200010rt417hp",
"version_name" : "Plan01",
"create_timestamp" : 1760518370000,
"defect_details_by_severity" : [ ],
"branch_name" : "基线",
"name" : "Report01",
"test_conclusion" : "商用发布",
"creator_name" : "wangluodan1",
"test_conclusion_details" : "结论"
} ],
"page_size" : 10
} SDK代码示例
SDK代码示例如下。
Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.cloudtest.v1.region.CloudtestRegion; import com.huaweicloud.sdk.cloudtest.v1.*; import com.huaweicloud.sdk.cloudtest.v1.model.*; public class ListTestReportsByConditionSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); ICredential auth = new BasicCredentials() .withAk(ak) .withSk(sk); CloudtestClient client = CloudtestClient.newBuilder() .withCredential(auth) .withRegion(CloudtestRegion.valueOf("<YOUR REGION>")) .build(); ListTestReportsByConditionRequest request = new ListTestReportsByConditionRequest(); request.withProjectId("{project_id}"); try { ListTestReportsByConditionResponse response = client.listTestReportsByCondition(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } } |
Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | # coding: utf-8 import os from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcloudtest.v1.region.cloudtest_region import CloudtestRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkcloudtest.v1 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.environ["CLOUD_SDK_AK"] sk = os.environ["CLOUD_SDK_SK"] credentials = BasicCredentials(ak, sk) client = CloudtestClient.new_builder() \ .with_credentials(credentials) \ .with_region(CloudtestRegion.value_of("<YOUR REGION>")) \ .build() try: request = ListTestReportsByConditionRequest() request.project_id = "{project_id}" response = client.list_test_reports_by_condition(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
Go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" cloudtest "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cloudtest/v1" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cloudtest/v1/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cloudtest/v1/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") auth, err := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). SafeBuild() if err != nil { fmt.Println(err) return } hcClient, err := cloudtest.CloudtestClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). SafeBuild() if err != nil { fmt.Println(err) return } client := cloudtest.NewCloudtestClient(hcClient) request := &model.ListTestReportsByConditionRequest{} request.ProjectId = "{project_id}" response, err := client.ListTestReportsByCondition(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
更多
更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。
状态码
| 状态码 | 描述 |
|---|---|
| 200 | OK |
| 400 | Bad Request |
| 401 | Unauthorized |
| 404 | Not Found |
| 500 | Internal Server Error |
错误码
请参见错误码。