基于python可伸缩JSON格式列表实现

对于消息体为一个json格式列表,列表长度变化的代码设计,如下实现可供参考。

1、python语言实现(直接取值)

#coding=utf-8

n = 2  # 行项目数
productCode = ['11111','222222','333333']
unit = ['H06','H07','H08']
qty = [6,7,8]
items = []

for i in range(0, n):
    item = {
        "itemType": "${SOZKitemType}",
        "promotionFlg": None,
        "deliveryTime": "${currentTime}",
        "excessRatio": 0,
        "storageLocation": "${ZKstorageLocation}",
        "itemNo": (i+1)*10,
        "merchantProductCode": productCode[i],
        "customerSupplierCode": None,
        "avaiableQtyUnit": unit[i],
        "referenceItemNo": (i+1)*10,
        "orderQty": qty[i],
        "canExcess": "0",
        "orderUnit": unit[i],
        "avaiableQty": qty[i],
        "orderNo": "20${orderNo}",
        "stockType": "${stockType}",
        "batch": "",
        "logisticsType": "ZK",
        "subProducts": None
    }
    items.append(item)
print(items)

2、python语言在Jmeter中实现(直接取值)

import json
n = 2  # 行项目数
items = []

for i in range(0, n):
    item = {
        "itemType": "${SOZKitemType}",
        "promotionFlg": None,
        "deliveryTime": "${currentTime}",
        "excessRatio": 0,
        "storageLocation": "${ZKstorageLocation}",
        "itemNo": (i+1)*10,
        "merchantProductCode": str(vars.get('merchantProductCode'+str(i+1))),
        "customerSupplierCode": None,
        "avaiableQtyUnit": str(vars.get('SUF'+str(i+1))),
        "referenceItemNo": (i+1)*10,
        "orderQty": str(vars.get('SOZKorderQty'+str(i+1))),
        "canExcess": "0",
        "orderUnit": str(vars.get('SUF'+str(i+1))),
        "avaiableQty": str(vars.get('SOZKorderQty'+str(i+1))),
        "orderNo": "20${orderNo}",
        "stockType": "${stockType}",
        "batch": "",
        "logisticsType": "ZK",
        "subProducts": None
    }
    items.append(item)
data = json.dumps(items,indent=4)
vars.put('newItems',data)

3、python语言在Jmeter中实现(不直接取值、纯JSON消息体制作),这种方式的好处是先将消息体都开发完整了,不用执行Jmeter脚本时候去拼接消息体,执行更快。

import json

n=2000 #行项目数
totalItem=[]
allParas = {
    "orderType": "${SOZKorderType}",
    "CreatedTime": "${currentTime}",
    "deliveryTime": "",
    "city": "",
    "customerCode": "${customerCode}",
    "vendorId": "",
    "reference2": "20${orderNo}",
    "distributionModeCode": "${distributionModeCode}",
    "cpoOrderNo": "",
    "telPhone": "",
    "province": "",
    "epCode": "${epCode}",
    "shippingConditionCode": "${shippingConditionCode}",
    "traceId": "${__UUID}",
    "creator": "${creator}",
    "merchantCode": "${outMerchantCode}",
    "address": "",
    "orderNo": "20${orderNo}",
    "countryNo": "",
    "updateIndicator": "",
    "customerDesc": "",
    "route": "111",
    "whCode": "${whCode}",
    "district": "",
    "deliveryPriorityCode": "${deliveryPriorityCode}",
    "contacts": "",
    "items": ""
  }

for i in range(0,n):
    item = {
 "itemType": "${SOZKitemType}",
 "promotionFlg": "",
 "deliveryTime": "${currentTime}",
 "excessRatio": 0,
 "storageLocation": "${ZKstorageLocation}",
 "itemNo": str((i + 1) * 10),
 "merchantProductCode": '${' + 'merchantProductCode' + str(i + 1) + '}',
 "customerSupplierCode": "",
 "avaiableQtyUnit": '${' + 'SUF' + str(i + 1) + '}',
 "referenceItemNo": str((i + 1) * 10),
 "orderQty": '${' + 'SOZKorderQty' + str(i + 1) + '}',
 "canExcess": "0",
 "orderUnit": '${' + 'SUF' + str(i + 1) + '}',
 "avaiableQty": '${' + 'SOZKorderQty' + str(i + 1) + '}',
 "orderNo": "20${orderNo}",
 "stockType": "${stockType}",
 "batch": "",
 "logisticsType": "ZK",
 "subProducts": ""
 }
    item['promotionFlg'] = None 
    #当我们从外部数据源获取数据时,经常会遇到一些空值或者null,在Python中,null或者空可以用 None 表示。
    item['customerSupplierCode'] = None
    item['subProducts'] = None
    totalItem.append(item)
allParas['items'] = totalItem
allParas['deliveryTime'] = None
allParas['city'] = None
allParas['vendorId'] = None
allParas['city'] = None
allParas['cpoOrderNo'] = None
allParas['telPhone'] = None
allParas['province'] = None
allParas['address'] = None
allParas['countryNo'] = None
allParas['updateIndicator'] = None
allParas['customerDesc'] = None
allParas['district'] = None
allParas['contacts'] = None

with open(r'D:\apache-jmeter-5.6.3\bin\TestData\common\requestBody.txt','w+') as file:
    json.dump(allParas,file,indent=4)
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值