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

如何在Karate中生成多个随机UUID并在场景大纲示例中使用

Karate API场景大纲动态使用随机UUID解决方案

Karate的场景大纲每遍历一行Examples数据,都会完整执行一遍场景内的所有步骤,刚好适配你多组用例生成独立UUID的需求,具体实现如下:


1. 多个随机UUID的生成方式

  • 自动逐次生成(推荐):不需要额外写批量生成逻辑,你现有定义的UUID()函数就可以直接用,跑N条用例就会自动调用N次函数,生成N个完全独立的随机UUID。
  • 提前批量生成:如果需要提前拿到所有UUID做预处理,可以在Background里批量生成存入变量,示例代码:
* def generateUuids = function(count) {
  let uuidArr = []
  for(let i = 0; i < count; i++) {
    uuidArr.push(java.util.UUID.randomUUID() + '')
  }
  return uuidArr
}
# 示例:提前生成2个UUID
* def preUuids = generateUuids(2)

2. 场景大纲示例中的调用方法

分两种常用场景选择即可:

方案1:无需提前绑定,每条用例自动生成UUID(适配绝大多数场景)

不需要修改Examples的结构,直接在请求体中引用当前用例生成的UUID即可,代码如下:

Background:
* def UUID = function() {return java.util.UUID.randomUUID() + ''}

Scenario Outline: 实现POST请求调用
Given url 'http://localhost:8080'
* def currentUid = UUID()
* print '当前用例生成的UUID:' + currentUid
# 用Karate表达式给CID赋值生成的UUID,name直接取Examples的对应值
And request { CID: '#(currentUid)', name: '#(name)' }
When method POST
Then status 201

Examples:
| name  |
| james |
| rahul |

执行时会自动跑2条用例,每条用例的CID都是全新生成的随机UUID。


方案2:预生成UUID,在Examples中明确绑定对应关系

如果你的业务需要提前固定所有UUID,或者需要在示例表中标记不同UUID的用途,可以提前把UUID存入变量,直接在Examples中引用变量名即可:

Background:
* def UUID = function() {return java.util.UUID.randomUUID() + ''}
# 提前预生成2个UUID存入变量
* def UID1 = UUID()
* def UID2 = UUID()
* print '预生成的UID1:' + UID1
* print '预生成的UID2:' + UID2

Scenario Outline: 实现POST请求调用
Given url 'http://localhost:8080'
And request { CID: '#(CID)', name: '#(name)' }
When method POST
Then status 201

Examples:
| CID  | name  |
| UID1 | james |
| UID2 | rahul |

Karate会自动从上下文匹配Examples中填写的变量名,把预生成的UUID填入请求的对应字段。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:06:04