Tsung脚本中使用动态参数(一)---直接在脚本里编写Erlang代码
杀死一个程序猿,只要改三次需求。同理,杀死一个接口自动化测试人员,只要改三次接口数据处理方式。我目前的状态,改了一次接口数据处理方式,有一种胸闷的感觉。
因为改需求,所以,要改脚本。T_T。所以,才有了接下来的艰辛过程,但是,我还是想以最平和的方式呈现给大家Tsung工具的强大。
1、Tsung版本:
1.6
2、setdynvars元素的相关使用,见installpath/share/tsung/tsung-1.0.dtd:
sourcetype (random_string | urandom_string | random_number |
file | erlang | eval| jsonpath | value | server)
从tsung usermanual来看,引入Erlang代码需要用到的sourcetype的属性为erlang或者eval,其中,当sourcetype的值为erlang时,意味着引入的编译好的函数,当值为eval时,是在tsung脚本里编写代码。我们今天重点讲解的是,当sourcetype="eval"时,如何在Tsung脚本里编写代码,看下面这段代码:
<setdynvars sourcetype="eval" code='fun({Pid,DynVars})->
Val="198",
list_to_integer(Val) end.'>
<var name="total_length_login_stream"/>
</setdynvars>
首先,解释一下,这段代码的含义:
sourcetype="eval"意思是参数的值的来源,这里是脚本里的erlang代码处理的结果,code是指erlang代码,var是指定义一变量,name为变量名,在接下来的脚本里,可以直接利用%%_variablename%%这个mark-up来取代要用这个参数值的地方。
其次,来看一下code=后面的这段内容:
对比一下tsungusermanual里的代码:
<setdynvars sourcetype="eval"
code="fun({Pid,DynVars})->
{ok,Val}=ts_dynvars:lookup(md5data,DynVars),
ts_digest:md5hex(Val) end.">
<var name="md5sum" />
</setdynvars>
大家可以看到,在xml里的元素属性值是以双引号括起来的,但是,我的代码里最外层却用了单引号,这是因为代码里,有双引号,防止在读取时匹配出现问题,而erlang代码里,单引号和双引号在定义变量里又有特殊含义, 所以,只能将最外部的双引号改为单引号。而其它的格式大体相同,其中,fun({Pid,DynVars})->..... end.定义了一个匿名函数,其中,Pid和Dynvars代表的含义是:
where Pid is the Erlang process id of the current virtual user and DynData the list of all Dynamic variables ,Pid是当前虚拟用户的Erlang进程的id,也就是说,是默认的不用特殊处理,DynVars是脚本里所有的动态变量的列表。tsungusermanual里这段代码,因为要再次处理md5data这个动态变量,所以,利用了{ok,Val}=ts_dynvars:lookup(md5data,DynVars)这段代码,这段代码执行以后,就将md5data的值赋给了变量Val,接下来的操作就是处理Val,最后将结果赋给Tsung脚本的变量md5sum。
而下面这段代码:
<setdynvars sourcetype="eval" code='fun({Pid,DynVars})->
39 Val="198",
40 list_to_integer(Val) end.'>
41 <var name="total_length_login_stream"/>
</setdynvars>
因处理是不是Tsung里的变量,所以,ts_dynvars:lookup()这段代码就可以去掉,直接写功能代码即可,最后将结果赋予tsung脚本里的变量。至于,功能代码怎么写,还需要小伙伴们多涉猎一下Erlang的语法喽。。。
Tsung脚本中使用动态参数(一)---直接在脚本里编写Erlang代码的更多相关文章
- Shell脚本中判断输入参数个数的方法投稿:junjie 字体:[增加 减小] 类型:转载
Shell脚本中判断输入参数个数的方法 投稿:junjie 字体:[增加 减小] 类型:转载 这篇文章主要介绍了Shell脚本中判断输入参数个数的方法,使用内置变量$#即可实现判断输入了多少个参数 ...
- 0057 Spring MVC如何获取HTTP请求头信息--URL中的动态参数--@RequestHeader--@CookieValue--@PathVariable
获取HTTP请求头信息 一个HTTP请求除了有参数和实体内容外还有HTTP请求头信息,Spring MVC也可以获取这部分信息 @RequestHeader解可以将请求头信息映射到处理方法的形参上 @ ...
- function(函数)中的动态参数
我们可向函数传递动态参数,*args,**kwargs,首先我们来看*args,示例如下: 1.show(*args) def show(*args): print(args,type(arg ...
- shell 脚本中的当前工作目录等于执行脚本时所在的工作目录
1. 测试脚本 在当前目录下创建 h1 h2两个文件夹 2. 在脚本所在目录执行脚本 在当前目录下创建了h1 h2两个目录 3. 在其他目录爱=下执行脚本 在其他目录下执行脚本时,在执行脚本所在的目录 ...
- 【转】shell脚本中如何传入参数
(1)直接用$1,$2取传入的参数vim /root/test.sh#!/bin/bashif [ $1 == "start" ] then echo "do ...
- JMeter怎么在get URL请求、POST请求中添加动态参数用于服务器段安全验证
从前一个页面(含有服务器段返回给客户端的参数,用于在下一次请求时验证)中添加后置处理器中的Regular Expression Extractor,使用正则表达式对参数进行提取. 在用到这些变量时可以 ...
- Hadoop streaming脚本中约束关系参数详解
1 -D mapred.output.key.comparator.class=org.apache.hadoop.mapred.lib.KeyFieldBasedComparator \ 2 -D ...
- 微信小程序for循环中传递动态参数
for循环中的参数,没法传到对应的 js里,所以直接在 wxml页面上跳转 发送参数的 wxml页面 <view class="uploader" wx:for=" ...
- [服务器]脚本:批处理带参数ping命令 发送邮件脚本
1.批处理带参数ping命令 @echo offecho Input you IP address ......set /p IP=echo Your IP number is %IP%.ping % ...
随机推荐
- 单源最短路径 dijkstra算法实现
本文记录一下dijkstra算法的实现,图用邻接矩阵表示,假设图为无向图.而且连通,有向图,不连通图的做法相似. 算法简述: 首先确定"单源"的源.假设是第0个顶点. 维护三个数组 ...
- Python: The _imagingft C module is not installed错误的解决
Python: The _imagingft C module is not installed错误的解决 By 白熊花田(http://blog.csdn.net/whiterbear) 转载需注明 ...
- 我的Java开发学习之旅------>Base64的编码思想以及Java实现
Base64是一种用64个字符来表示随意二进制数据的方法. 用记事本打开exe.jpg.pdf这些文件时,我们都会看到一大堆乱码,由于二进制文件包括非常多无法显示和打印的字符.所以,假设要让记事本这种 ...
- Shiro学习(一)总体介绍
1.1 简介 Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Securi ...
- Winform开发框架中工作流模块的表设计分析
在较早博客随笔里面写过文章<Winform开发框架之简易工作流设计>之后,很久没有对工作流部分进行详细的介绍了,本篇继续这个主题,详细介绍其中的设计.实现及效果给大家,这个工作流在好几年前 ...
- 微信小程序豆瓣电影项目的改造过程经验分享
在学习微信小程序开发过程中,一部分的难点是前端逻辑的处理,也就是对前端JS的代码编辑:一部分的难点是前端界面的设计展示:本篇随笔基于一个豆瓣电影接口的小程序开源项目进行重新调整,把其中遇到的相关难点和 ...
- git忽略文件
.gitignore文件配置 ###################### # Project Specific ###################### /src/main/webapp/dis ...
- Mac环境下实现alias重命名命令(永久生效)
Mac环境下实现alias重命名命令 iOS Dev在使用Xcode完成代码编写后,可能需要上传至第三方分发应用给测试人员进行相关测试,比如蒲公英.FIR. 效率较高的上传方式是借助于Fastlane ...
- iOS10 相册权限
当我升级到Xcode8后,启动我的相机项目,直接crash,输出的日志如下: '2016-07-08 16:41:11.268943 project-name[362:56625] [MC] Syst ...
- 安装eclipse时跳转到网页提示JRE Missing
可能的原因:jdk与安装的eclipse不兼容,可能64位机器安装了32位的jdk,导致64位的eclipse不能识别.