性能测试关联是每个性能测试人员必须掌握的技能,记得2013年做性能测试,关联对于我来说是一个比较紧张与害怕的事情,记得当时在给财务公司做网银性能测试就用到了关联,当时让会的同事教我,也许因为怕教他人饿死自己,每次请教的时候都是模拟两可,总是说就这样写就行。后面做完项目后,自己花了时间与精力终于搞定什么是关联,为什么要做关联,中国有一句古话《求人不如求己》,只有自己掌握核心技能或者自己在某方面有沉淀,所有人脉自然就来,古人云《富贵深山有远亲,贫穷闹市无近邻》。
字典是另一种可变容器,且可存储任意类型对象。简单的说就是容器,只有符合字典的规则就能存放数据,对于java熟悉人员来说相当于java的map,字典是键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中如 d = {key1 : value1, key2 : value2 }。
根据python字典规则【k->】,以下是简单的字典,
>>> homelear={"weekends":"是一个集中学习晋升的好日志",
"play":"出去玩,在家学习",
"learning":"学习什么",
"plan":"['java','python','linux','mysql']"}
>>> dir(homelear)
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
>>>
#新增一个元组
dicadd = ('调优', '慢查询', '执行计划', '索引','架构');
#把刚才创建的元组新增到字典中去
>>> homelear["mysql"]=dicadd
#查看新增的结果
>>> homelear
{'weekends': '是一个集中学习晋升的好日志',
'play': '出去玩,在家学习', 'learning': '学习什么',
'plan': "['java','python','linux','mysql']",
'mysql': ('调优', '慢查询', '执行计划', '索引', '架构')}
#第二种新增方法:
>>> homelear.update(jvm="调优不是一蹴而就的")
#查看结果
>>> homelear
{'weekends': '是一个集中学习晋升的好日志',
'play': '出去玩,在家学习', 'learning': '学习什么',
'plan': "['java','python','linux','mysql']",
'mysql': ('调优', '慢查询', '执行计划', '索引', '架构'),
'jvm': '调优不是一蹴而就的'}
#同时增加两个写法:
>>> homelear.update(jvm="调优不是一蹴而就的",ngix="它不过就是一个转发而已")
#查看
>>> homelear 就是一个转发而已")
{'weekends': '是一个集中学习晋升的好日志', 'play': '出去玩,在家学习', 'learning': '学习什么', 'plan': "['java','python','linux','mysql']", 'mysql': ('调优', '慢查询', '执行计划', '索引', '架构'), 'jvm': '调优不是一蹴而就的', 'ngix': '它不 过就是一个转发而已'}
>>>
#新建字典
>>> a = {"a":"b","c":"dd"}
#删除字段key
>>> a.pop('a')
'b'
#查询
>>> a
{'c': 'dd'}
#新建字典
>>> a = {"a":"b","c":"dd"}
# 根据del规则删除key
>>> del a['a']
# 查询
>>> a
{'c': 'dd'}
改
#新建字典
>>> a = {"a":"b","c":"dd"}
# 修改
>>> a['a']="学习是一个快乐的事情,分享体现价值的事情"
# 查询
>>> a
{'a': '学习是一个快乐的事情,分享体现价值的事情', 'c': 'dd'}
查
#查看该字典下有什么方法可以用
>>> dir(a)
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
#根据上面方法可以用
#遍历字典
>>>
>>> for k,v in a.items():
... print("key=%s,value=%s"%(k,v))
...
key=a,value=学习是一个快乐的事情,分享体现价值的事情
key=c,value=dd
>>>
>>> for key in a:
... print("key=%s"%a[key])
...
key=学习是一个快乐的事情,分享体现价值的事情
key=dd
#遍历value值
>>> for value in a.values():
... print(value)
...
学习是一个快乐的事情,分享体现价值的事情
dd
>>>
简单的说:每次请求服务器,服务器会给客户端发送一个动态值,但服务器会每次校验客户端是否携带该值并做对比,如果每次请求携带值与发送的值是正确就放行,如果不正确就返回失败获取其他步骤。
from django.shortcuts import render
from django.http import HttpResponse, JsonResponse
import time
# Create your views here.
def index_seven(request):
return HttpResponse("欢迎 性能测试人员 进入开发性能架构师!")
# Create your views here.
def index(request):
return render(request, "index.html")
param = []
# 登录
def login(request):
if request.method == "POST":
username = request.POST.get('username', '')
password = request.POST.get('password', '')
if username == 'admin' and password == 'admin':
timesoo = time.time()
param.append(timesoo)
result = {'code': 200, 'msg': 'success', "reslutselect": param[0]}
return JsonResponse(result)
else:
result = {'code': 111, 'msg': 'username or password error'}
return JsonResponse(result)
# return render(request, 'index.html', {'error': 'username or password error!'})
def select(request):
if request.method == "POST":
msg = request.POST.get('msg', '')
res = request.POST.get('reslutselect', '')
if msg == 'success' or res is not None:
result = {'code': 200, 'msg': '恭喜你成功'}
return JsonResponse(result)
else:
result = {'code': 111, 'msg': '恭喜未登录'}
return JsonResponse(result)
# return render(request, 'index.html', {'error': '恭喜你没有登录'})
from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from sevenapp import views
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^index/$', views.index), # 添加index/路径配置
url(r'^login/$', views.login), # 添加简单登录
url(r'^query/$', views.select), # 添加简单登录
]
1、第一从响应结果获取响应的关联数据:
2、增加JSON Extractor并填写表达式
解释
JsonPath | 描述 |
---|---|
$ | 根节点 |
@ | 当前节点 |
.or[] | 子节点 |
.. | 选择所有符合条件的节点 |
* | 所有节点 |
[] | 迭代器标示,如数组下标 |
[,] | 支持迭代器中做多选 |
[start:end:step] | 数组切片运算符 |
?() | 支持过滤操作 |
() | 支持表达式计算 |
关联效果
上面是简单的操作步骤,相信大家看看就明白,话说《言语道断》
送大家一篇《诸葛亮》修身文章:
夫君子之行,静以修身,俭以养德。非淡泊无以明志,非宁静无以致远。夫学须静也,才须学也,非学无以广才,非志无以成学。淫慢则不能励精,险躁则不能治性。年与时驰,意与日去,遂成枯落,多不接世,悲守穷庐,将复何及!