我正在进行一个端到端的测试场景,我需要一个用户记录perf map使用一个键,它是同一个用例中meta_table id的引用。
当用户数据存储在NoSQL数据库中时,meta_table存储在RDBMS中并使用自动生成的id,因此每次我只运行一个测试工作流程 相同用例的meta_table正在生成全新的id。
以下是我的数据设置工作流程:
pipeline:
db1:
register:
action: dsunit:register
datastore: db1
config:
driverName: mysql
descriptor: '[username]:[password]@tcp(127.0.0.1:3306)/[dbname]?parseTime=true'
credentials: $mysqlCredentials
parameters:
dbname: db1
prepare:
sequence:
datastore: db1
action: dsunit.sequence
tables:
- meta_table
post:
- seq = $Sequences
data:
action: nop
init:
- db1key = data.db1.setup
- db1Setup = $AsTableRecords($db1key)
setup:
datastore: db1
action: dsunit:prepare
data: $db1Setup
db2:
register:
action: dsunit:register
datastore: db2
config:
driverName: aerospike
descriptor: tcp([host]:3000)/[namespace]
parameters:
namespace: test
host: 127.0.0.1
port: 3000
prepare:
data:
action: nop
init:
- db2key = data.db2.setup
- db2Setup = $AsTableRecords($db2key)
setup:
datastore: db2
action: dsunit:prepare
data: $db2Setup
还有我的数据文件:
@db1_setup.json
[
{
"Table": "meta_table",
"Value": {
"id": "$seq.meta_table",
"name": "Name 1",
"type_id": 1
},
"PostIncrement": [
"seq.meta_table"
],
"Key": "${tagId}_meta_table"
}
]
@db2_setup.json
[
{
"Table": "user",
"Value": {
"id": "$userID",
"email": "user@abc.com",
"perf": {
"??meta_table.id here??": "$timestamp"
}
},
"AutoGenerate": {
"userID": "uuid.next"
},
"Key": "${tagId}_user"
}
]
我正在寻找一个有效的表达式来代替:
"??meta_table.id here??"
扩展到meta_table.id,
我尝试了以下内容,但都没有效果:
答案 0 :(得分:0)
您想要使用
${dsunit.${tagId}_meta_table[0].id}
dsunit,因为那是根
{tagId} _meta_table,因为这是你表的关键
[0]因为该表可以有多行