学习笔记-JMeter参数化

Jmeter测试时包含两种情况的参数,一种是在url中,一种是请求中需要发送的参数。

URL中的参数,如:http://www.cnblogs.com/fenggf/p/8601716,其中“fenggf/p/8601716”为url参数
请求中的参数,如:key-value类型的请求,key 为参数名,value 为参数值。例如:https://i.cnblogs.com/posts?categoryid=1177604 中 categoryid 为参数,对应值为:1177604

Jmeter脚本参数化时,使用参数的地方书写格式为:${参数名}

下面利用实例来介绍Jmeter参数化的三种方法:

1、用户定义的变量

        这种方法常用来解决线程组中多个请求共用相同的数据。比如进行接口测试时,一个任务有100个接口,用的是相同的服务器名称或IP;一个个写Jmeter脚本,当切换环境时,如果每个http请求里面去修改,会是一件很繁琐,所以可以利用 用户定义的变量,把 服务器或IP 作为变量提前定义好

(1)添加用户定义的变量(右击线程组-添加-配置元件-用户定义的变量)

(2)添加变量内容,变量 名称 设为:host, 值 为:api.xxxx.cn(此处定义的是服务器名称或IP,则根据自己的测试项目的服务器名称或IP填写对应的值)

(3)脚本中需要用到此变量(服务器名称或IP)的所有地方都可以引用这个变量名了,引用变量的格式为:${变量名}(此处则应为:${host}),以获取学生信息为例,Jmeter脚本如下:

2、函数生成器

  • 用函数生成随机数:(__Random)

             在Jmeter中点击  选项-函数助手对话框:

         

             在弹出的对话框中选__Random,填写随机数的范围,点击生成按钮,就看到需要的字符串了,然后复制出来

         

            在请求中使用生成的随机数,把复制的字符串粘贴到请求的参数里,如: "name":"fengfeng${__Random(1,100,)}",请求后,name的值则会在fengfeng1-fengfeng100之间随机生成

        

             运行脚本后,可查看到该请求发送的数据中, "name":"fengfeng56"

             

 

  • 用函数生成当前时间:(__time)

          在Jmeter中点击  选项-函数助手对话框:

          在弹出的对话框中选__time,可以默认时间戳格式也可以自定义时间格式,就看到需要的字符串了,然后复制出来

          默认时间戳的格式:

           

           自定义年月日格式:

           

          在请求中使用生成的随机数,把复制的字符串粘贴到请求的参数里,如:"grade":"三年级${__time(yyMMddHHmmss,)}",,请求后,grade的值则会根据当前时间生成:三年级xxxxx

        

          运行脚本后,可查看到该请求发送的数据中

             

 

3、从文件中读取(CSV Data Set Config)

     (1) 以注册接口(user_reg)为例,在本地创建一个文件,添加6个username 和passwd的值,并对脚本设置6个线程或者循环6次,来对这6个用户进行注册

 

      

      

      (2)添加CSV Data Set Config(右击“线程组” - “添加” - “配置元件” - "CSV Data Set Config"),可对该线程组所有接口适用,比如 登录接口 需要用到username 和passwd,也可以引用,假如这些数据仅应用于“注册接口”接口的话,可以直接在“注册接口”接口下面创建"CSV Data Set Config",在线程组下建,则可适用于该线程组的所有接口

      

      (3)根据下图添加对应的,"Filename"选择填写本地准备的文件,如:D:\username.txt, "Variable Names" 输入"username" 和"passwd", 以逗号隔开,为避免插入的数据乱码

             

  •   File encoding:文件的编码格式,可以使用电脑自带的笔记本另存为时选择编码方式即可
  •   Variable Names(comma-delimited):参数名称(如:有几列参数,在这里面就写几个参数名称,每个名称中间用分隔符分割,分隔符在下面的“Delimitet”中定义,为了和文件中的“,”对应,这里也用“,”分割每个参数名,引用方法:${username},${passwd}
  •   Delimitet:定义分隔符,这里定义某个分隔符,则在“Variable Names”用这里定义的分隔符分割参数。
  •   Allow quote data:选项选为“true”的时候对全角字符的处理出现乱码 
  •   Recycle on EOF:是否循环读入,因为CSV Data Set Config一次读入一行,分割后存入若干变量中交给一个线程,如果线程数超过文本的记录行数,那么可以选择从头再次读入

(4)由于"CSV Data Set Config"中的变量名为username 和passwd,因此在注册接口的参数username,pwd,cpwd的值分别设为${username}, ${passwd}

 

posted on 2018-03-20 17:44  fengyelan2233  阅读(218)  评论(0编辑  收藏  举报

导航