首页 > 代码库 > 如何在tsung中使用动态参数(一)

如何在tsung中使用动态参数(一)

    这两天给公司一个新项目做上线前的压力测试,这个项目主要的接口有两个,获取订单号(getOrderId)和确认订单(confirm),需要重点压测。开始,我们选择用python写测试例,python的好处是开发迅速,但是并发能力不够;我就想试试用tsung,tsung是用erlang写的,并发肯定没问题,但我以前只用来测试过静态网站,没有测试过动态API,查了查文档,发现tsung是支持用erlang脚本生成动态参数的,于是我决定用tsung。

    tsung的安装略过,看一下getorderId的配置:

  <request subst="true"> 
<dyn_variable name="order_id" jsonpath="data.order_id"/>
      <http url="/v5/order/getOrderId/" method="POST" version="1.1" contents="token=%%anysdk:get_token%%json_data=http://www.mamicode.com/and"/> >

说明:

   subst = "true" 表示启用动态参数,两个%%中间的内容即是参数所调用的erlang脚本,格式为module:fun,module为模块名,fun为函数名。

对应的erlang代码:

-module(anysdk).
-export([get_token/1]).

get_token({Pid, DynData}) ->
		{ MegaSec, Second, MicroSec } = erlang:now(),
		TimeStamp = MegaSec * 1000000 + Second + MicroSec/1000000,
		T2 = trunc(TimeStamp),		
		StrTime = integer_to_list(T2),
		base64:encode_to_string(StrTime).

说明:

    Pid为当前用户的进程号,貌似没啥用处,DynData是动态参数列表,用来从tsung传递参数,get_token不需要参数,所以也没用。

<span style="font-size:14px;"><dyn_variable name="order_id" jsonpath="data.order_id"/></span>
这句话是用来捕获服务端返回值的,getOrderId返回一个json串,这个指令通过jsonpath捕获到相应的对象并存到动态变量order_id中,供后续操作使用。