在Testrail中创建测试运行后如何获取Testrun ID
如何获取Testrail中刚创建的测试运行ID(C#实现)
我正在尝试用Testrail的API端点结合Selenium C#实现Testrail集成,已经成功创建测试运行,现在想获取刚创建的测试运行ID,该怎么做?
现有代码
C# 创建测试运行代码
[OneTimeSetUp] public async Task OneTimeSetUp() { RestRequest newRequest = new RestRequest($"index.php?/api/v2/add_run/{project_id}", Method.Post); string authInfo = Base64StringConverter.GetBase64String("email:password"); newRequest.AddHeader("Authorization", "Basic " + authInfo); newRequest.AddHeader("Content-Type", "application/json"); // 读取JSON内容 string jsonFromFile; using (var reader = new StreamReader(_createrunpath)) { jsonFromFile = reader.ReadToEnd(); } var customerFromJson = JsonConvert.DeserializeObject<CreateRun>(jsonFromFile); newRequest.RequestFormat = DataFormat.Json; newRequest.AddJsonBody(customerFromJson); // 发送请求 var newResponse = await restClient.ExecuteAsync(newRequest); HttpStatusCode statusCode = newResponse.StatusCode; // 断言状态码 Console.WriteLine((int)statusCode); Assert.That((int)statusCode, Is.EqualTo(200)); }
配置JSON文件
{ "assignedto_id": 1, "suite_id": 1111, "name": "This is a new test run test", "refs": "API Auto Tests", "description": "This is a description of the test" }
解决方案
Testrail的add_run接口在创建成功后会返回包含测试运行ID的JSON响应,只需解析该响应即可获取ID,具体步骤如下:
1. 定义响应实体类
创建一个用于接收API响应的类,映射返回的核心字段(至少包含id):
public class TestRunResponse { [JsonProperty("id")] public int Id { get; set; } // 可选:添加其他需要的返回字段,比如名称、套件ID等 [JsonProperty("name")] public string Name { get; set; } [JsonProperty("suite_id")] public int SuiteId { get; set; } }
2. 解析响应获取ID
在请求执行成功(状态码为200)后,将响应内容反序列化为上述实体类,即可提取ID:
修改后的代码片段:
// 发送请求 var newResponse = await restClient.ExecuteAsync(newRequest); HttpStatusCode statusCode = newResponse.StatusCode; // 断言状态码 Console.WriteLine((int)statusCode); Assert.That((int)statusCode, Is.EqualTo(200)); // 解析响应获取测试运行ID if (newResponse.IsSuccessful && !string.IsNullOrEmpty(newResponse.Content)) { var testRun = JsonConvert.DeserializeObject<TestRunResponse>(newResponse.Content); int createdRunId = testRun.Id; Console.WriteLine($"成功创建测试运行,ID为:{createdRunId}"); // 可将ID存储为类成员变量,供后续用例执行时更新结果使用 }
注意事项
- 确保已安装
Newtonsoft.JsonNuGet包(用于JSON序列化/反序列化) - 仅在响应成功(
IsSuccessful为true)且内容不为空时进行解析,避免空引用或解析错误
内容的提问来源于stack exchange,提问作者Aidan
相关产品推荐
相关产品推荐

