学习用Jmeter生成证件号的方法(图)

测试工具 创建于:2022-05-18
  
写在前面   前几天五一放假期间,偶然在一个
测试群里看到一位群友提问“
Jmeter如何生成合法的身份证号”。我们都知道,如果是
Python
Java语言,借助第三方库,很容易就能够模拟出合法的身份证号。在此之前,我也遇到过使用Jmeter生成身份证号的场景,但那时候我们的接口没有身份证号的合法校验。为了方便起见,在传参时都是用函数助手生成18位长度的随机数字字符串传递。于是,出于好奇和热心,在经过自己一番实践过后,解答了他的问题。因此,本篇也是一次解答群友问题的实践
记录。  
 Jmeter生成身份证号的三种方法
  方法一:通过RandomString函数   熟悉Jmeter的人都知道,Jmeter提供了函数助手的功能,通过函数助手中的RandomString函数可以生成指定长度的、随机的数字字符串,但这种方法生成的身份证号只符合了身份证号的长度规则,它并不合法。因此,这种方法的好处是简单快捷,缺点是不适用于后端接口存在合法性校验的情况。
函数助手

  
方法二:通过CSV文件助手   ① 模拟生成身份证号   我们可以提前将在其他地方,比如下图网站中模拟生成好一些合法的身份证号数据,并复制到CSV文件中。
http://www.chineseidcard.com/

  ② 在Jmeter中引用CSV文件   添加CSV Data Set Config元件,设置变量名id_card,在需要引用的地方使用${id_card}来引用即可。这种方法的好处是读取到的CSV文件中的身份证号是合法的,缺点是不适用于后端接口存在身份证号重复性校验的情况,因为脚本多次运行时,每次都会从头开始读取数据。
CSV Data Set Config

  
方法三:通过BeanShell取样器读取Python文件   很显然,当我们需要每运行一次Jmeter脚本就可以生成一个合法的、且不重复的身份证号时,以上两种实现方式就无法满足需求。这也引出了本次
文章重点介绍的第三种方法,总体实现思路如下:   
·python里有现成的第三方库faker库可以生成身份证号,可以编写一个python文件,引用faker库,定义一个生成身份证号的函数。   
· 然后在jmeter中添加一个beanshell取样器,在取样器中调用系统命令行执行python文件,同时定义一个变量来接收函数返回值,也就是身份证号。
Beanshell取样器

  1.python文件create_ssn.py文件内容如下:   # coding:utf-8   from faker import Faker   fake = Faker(locale="zh_CN")   def create_ssn():       ssn = fake.ssn()       print(ssn)       return ssn   if __name__ == '__main__':       create_ssn()

  2.Beanshell脚本内容如下:   String command = "cmd /c python C:\\create_ssn.py";   Runtime rt = Runtime.getRuntime();   Process pr = rt.exec(command);   pr.waitFor();   BufferedReader b = new BufferedReader(new InputStreamReader(pr.getInputStream()));   String line = "";   StringBuilder response = new StringBuilder();   while ((line = b.readLine()) != null) {     response.append(line);   }    String response_data = response.toString();    System.out.println("身份证号:" + response_data);    b.close();    vars.put("ssn",response.toString());

  注意事项:   
·第一行中的cmd /c 可以省略,如果是
Windows可以加,如果是Mac或
Linux系统,一定不能加;   
· py文件路径不能带有空格,路径分隔要用双斜杠。   3.运行后,在调试取样器中可以看到变量ssn的值。此时,即可使用${ssn}在接口中进行传参。
调试取样器

 
 小结:   以上就是利用python的faker库+Beanshell取样器生成身份证号的整体实现过程,此外还可以借助这种方式生成姓名、
手机号、银行卡号、省市区地址等多种数据。当然,生成测试数据的方式有很多种,主要看个人选择,以上方法也并不一定是最佳方案。如果你有更好的方法,欢迎留言讨论!


  
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理

权威发布,测试选择不纠结!第15届软件测试行业报告,直击行业发展,把握未来方向!

原文地址:http://www.51testing.com/?action-viewnews-itemid-6657714

免责声明:本文来源于互联网,版权归合法拥有者所有,如有侵权请公众号联系管理员

* 本站提供的一些文章、资料是供学习研究之用,如用于商业用途,请购买正版。

发表于:2022-5-18 09:32 作者:测试开发实战 来源:知乎