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

C#接口测试如何连续提交100个交易JSON返回200状态码

原有写法错误原因

  • 第一种写法报错:StringContent 构造函数没有接收List<string>类型的重载,仅支持传入字符串类型的内容,因此直接传列表会触发语法错误。
  • 第二种写法接口仅识别1笔交易:直接拼接100个JSON对象会生成非法JSON格式(形如{"type":"transaction",...}{"type":"transaction",...}),服务端解析时只会读取第一个完整的JSON对象,剩余内容会被忽略。

方案1:接口支持批量提交(单次请求传多笔交易)

先构造合法的JSON数组结构,将100个交易对象放入数组后再序列化传入请求体:

[Test]
public async Task Create100TransactionsReturns200()
{
    var singleTransactionJson = JsonReader.ReadJson("Transaction");
    var singleTransaction = JObject.Parse(singleTransactionJson);
    // 构造JArray存储100个交易对象
    JArray transactionsArray = new JArray();
    for (int i = 0; i < 100; i++)
    {
        // DeepClone避免重复引用同一个对象
        transactionsArray.Add(singleTransaction.DeepClone());
    }
    var content = new StringContent(transactionsArray.ToString(), Encoding.UTF8, "application/json");
    var response = await HttpClient.PostAsync(CreateNewTransactionURL, content);
    Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
}

注意:如果后端要求的批量格式不是数组,而是外层包对象的结构(如{"transactions": [xxx]}),自行调整JArray的外层结构即可。


方案2:接口仅支持单笔提交,需连续发起100次请求

循环调用单笔创建接口,每次发起独立请求,普通功能测试用串行提交即可:

[Test]
public async Task Create100TransactionsReturns200()
{
    var singleTransactionJson = JsonReader.ReadJson("Transaction");
    var jObject = JObject.Parse(singleTransactionJson);
    var json = jObject.ToString();
    // 串行提交,每次等上一笔完成再发下一笔
    for (int i = 0; i < 100; i++)
    {
        var content = new StringContent(json, Encoding.UTF8, "application/json");
        var response = await HttpClient.PostAsync(CreateNewTransactionURL, content);
        Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
    }
}

如果是压测场景需要并行提交,可以改用Task.WhenAll批量执行请求:

[Test]
public async Task Create100TransactionsReturns200()
{
    var singleTransactionJson = JsonReader.ReadJson("Transaction");
    var jObject = JObject.Parse(singleTransactionJson);
    var json = jObject.ToString();
    var tasks = new List<Task<HttpResponseMessage>>();
    for (int i = 0; i < 100; i++)
    {
        var content = new StringContent(json, Encoding.UTF8, "application/json");
        tasks.Add(HttpClient.PostAsync(CreateNewTransactionURL, content));
    }
    var responses = await Task.WhenAll(tasks);
    foreach (var response in responses)
    {
        Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:57:01