欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Jmeter 如何生成合法 ID 号

最编程 2024-04-08 13:37:37
...

引言

前几天在某个软件测试群里看到有网友提问“如何在Jmeter中生成合法的身份证号”,当时出于热心,提供了大体的实现思路,但后来仔细想了想,回复地可能不是特别具体,于是决定自己实践一次。

在使用Jmeter进行自动化测试或性能测试过程中,生成身份证号的方法有多种,需要结合具体的接口校验规则来综合选择:

1、接口对身份证号参数无重复性校验、无合法性校验时

  • 可以使用函数助手,生成一个18位长度的字符串

网络异常,图片无法展示
|

2、接口对身份证号参数无重复性校验、但有合法性校验时

  • 可以使用CSV Data Set Config:提前将在其他地方找到的合法的身份证号数据复制到CSV文件中,并添加CSV Data Set Config元件,设置变量名id_card,在需要引用的地方使用${id_card}来引用

网络异常,图片无法展示
|

3、接口对身份证号参数有重复性校验、且有合法性校验时

很显然,以上两种实现方式无法满足需求,因为第一种方式生成的18位数字无法通过合法性校验,第2种通过读取CSV数据文件的方式,虽然能通过合法性校验,但每次都会重复从头开始读取,当多次运行Jmeter脚本时,传参就会重复,因此需要每运行一次Jmeter脚本就可以生成一个合法的、且随机的身份证号,总体实现思路如下:

  • ① python里有现成的第三方库faker库可以生成身份证号,编写一个python文件,引用faker库,定义一个生成身份证号的函数
  • ② 然后在jmeter中添加一个beanshell取样器,在取样器中调用cmd执行python文件,定义一个变量来接收函数返回值,也就是身份证号

网络异常,图片无法展示
|

  • 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()
  • 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());

注意事项:

1.第一行中的cmd /c 可以省略,如果是Windows可以加,如果是Mac或Linux系统,一定不能加

2.py文件路径不能带有空格,路径分隔要用双斜杠

  • 运行后,在调试取样器中可以看到变量ssn的值

总结

以上就是利用python的faker库+Beanshell取样器生成身份证号的整体实现过程,此外还可以借助这种方式生成姓名、手机号、银行卡号、省市区地址等多种数据。当然,生成测试数据的方式有很多种,主要看个人选择。