You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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.Json NuGet包(用于JSON序列化/反序列化)
  • 仅在响应成功(IsSuccessful为true)且内容不为空时进行解析,避免空引用或解析错误

内容的提问来源于stack exchange,提问作者Aidan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 08:35:20