Jmeter如何生成合法的身份证号

简介: Jmeter生成身份证号的三种方式:1.函数助手;2.CSV Data Set Config;3.Python+Beanshell;

引言

前几天在某个软件测试群里看到有网友提问“如何在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-8fromfakerimportFakerfake=Faker(locale="zh_CN")
defcreate_ssn():
ssn=fake.ssn()
print(ssn)
returnssnif__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取样器生成身份证号的整体实现过程,此外还可以借助这种方式生成姓名、手机号、银行卡号、省市区地址等多种数据。当然,生成测试数据的方式有很多种,主要看个人选择。

相关文章
|
5月前
|
Java 数据库连接 测试技术
自定义校验注解,优雅的实现手机号,身份证号的格式校验!
本文介绍了如何创建自定义校验注解来实现手机号和身份证号的格式校验,包括定义注解、实现校验逻辑、将注解应用于模型类,以及常用的校验器库和框架,旨在提高代码的可维护性和减少重复的校验逻辑。
|
9月前
|
JavaScript
JS严格校验身份证号-(严格校验每一位身份号码)
JS严格校验身份证号-(严格校验每一位身份号码)
388 0
|
9月前
证件校验正则
证件校验正则
58 0
|
前端开发 JavaScript
JS前端实现身份证号码合法性校验(校验码校验)
JS前端实现身份证号码合法性校验(校验码校验)
752 0
|
PHP
php验证数据:手机号,身份证,邮箱,防注入
php验证数据:手机号,身份证,邮箱,防注入
139 0
|
前端开发
手机号校验工具函数
工作中遇到的手机号校验的需求
|
Java
Java实现身份证号码验证
整理文档时,搜刮出一个Java实现身份证号码验证源码示例代码,稍微整理精简了一下分享给大家。
451 0
|
算法
VB编程:身份证号码是否合法-49
VB编程:身份证号码是否合法-49
160 0
电话号码验证器(FreeCodeCamp)
电话号码验证器(FreeCodeCamp)
441 0
电话号码验证器(FreeCodeCamp)
|
算法
VB编程:身份证号码是否合法
VB编程:身份证号码是否合法
243 0
VB编程:身份证号码是否合法