random.randint生成1000个随机的数,但是数可能会重复。解决重复随机数的问题?
会出现重复的实现方式:
while m < 1000:
m += 1
goodsCode = "1002" + str("%05d" % (random.randint(0, 99999)))
优化后不会出现重复随机数的实现方式:
goodsCode_lst = []
while m < 1000:
goodsCode = "1002" + str("%05d" % (random.randint(0, 99999)))
if goodsCode not in goodsCode_lst:
m += 1
goodsCode_lst.append(goodsCode)
Python 之jsonpath提取返回数据列表中有多个字典,根据字典中某个匹配的字段取这个字典中其他字段的值的处理
如何运用Python提取接口返回的数据或者jmeter提取接口返回的数据?
通常我们用到jsonpath来提取数据。首先需要导包,from jsonpath import jsonpath。
jsonpath表达式:
$ ---->表示根节点
. ---->一个点表示子节点
.. ---->两个点表示子孙节点
[] ---->方括号表示选择子节点或者选择索引
[a,b] ---->表示选择多个字段
@ ----->代表当前选中的节点
[?(过滤条件)] ----》通过条件过滤数据
res = {
"data": {
"appList": [
{
"appCode": "smartOps",
"appDoMain": 2,
"appId": 10000009,
"appIndex": "?apptoken=${apptoken}",
"appName": "自动化项目",
"appRootPath": "http://uat-uc.cuv.com.cn/login/",
"appType": 0,
"id": "3498308675110135424",
"status": ''
},
{
"appCode": "FEA-CCS",
"appDoMain": 4,
"appId": 10000001,
"appIndex": "?apptoken=${apptoken}",
"appName": "券系统",
"appRootPath": "http://inside-uat.cuv.com.cn/CouponCenterSystemAdmin/#/",
"appType": 0,
"id": "3563095252116668864",
"status": ''
}
]
},
"message": "",
"returncode": "00000"
}
print(jsonpath(res, "$.data.appList[?(@.appName=='券系统')].appId")) # 筛选返回数据中索引中包含过滤条件的appId
print(jsonpath(res, "$.data.appList[0,1].appId")) # 筛选返回数据中索引为0和1中的所有appId
print(jsonpath(res, "$.data.appList[0].[appId,appName]")) # 筛选返回数据中索引为0中的所有appId,appName
print(jsonpath(res, "$..appId")) # 筛选返回数据中所有appId
运行结果:
[10000001]
[10000009, 10000001]
[10000009, ‘自动化项目’]
[10000009, 10000001]
接口返回一个列表中包含多个字典的json数据类型,需要取字典中appName为“券系统”appId的值
jsonpath(res, “
.
d
a
t
a
.
a
p
p
L
i
s
t
[
?
(
@
.
a
p
p
N
a
m
e
=
=
′
券系
统
′
)
]
.
a
p
p
I
d
"
)
或者
j
s
o
n
p
a
t
h
.
j
s
o
n
p
a
t
h
(
r
e
s
,
"
.data.appList[?(@.appName=='券系统')].appId") 或者 jsonpath.jsonpath(res, "
.data.appList[?(@.appName==′券系统′)].appId")或者jsonpath.jsonpath(res,".data.appList[?(@.appName==‘券系统’)].appId”)