前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jmeter如何生成合法的身份证号?

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

作者头像
大刚测试开发实战
发布2022-11-14 14:18:20
1.2K0
发布2022-11-14 14:18:20
举报
文章被收录于专栏:大刚测试开发实战

写在前面

前几天五一放假期间,偶然在一个测试群里看到一位群友提问“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文件中的身份证号是合法的,缺点是不适用于后端接口存在身份证号重复性校验的情况,因为脚本多次运行时,每次都会从头开始读取数据。

方法三:通过BeanShell取样器读取Python文件

很显然,当我们需要每运行一次Jmeter脚本就可以生成一个合法的、且不重复的身份证号时,以上两种实现方式就无法满足需求。这也引出了本次文章重点介绍的第三种方法,总体实现思路如下:

  • python里有现成的第三方库faker库可以生成身份证号,可以编写一个python文件,引用faker库,定义一个生成身份证号的函数
  • 然后在jmeter中添加一个beanshell取样器,在取样器中调用系统命令行执行python文件,同时定义一个变量来接收函数返回值,也就是身份证号
  1. python文件create_ssn.py文件内容如下
代码语言:javascript
复制
# 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脚本内容如下:

代码语言:javascript
复制
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取样器生成身份证号的整体实现过程,此外还可以借助这种方式生成姓名、手机号、银行卡号、省市区地址等多种数据。当然,生成测试数据的方式有很多种,主要看个人选择,以上方法也并不一定是最佳方案。如果你有更好的方法,欢迎留言讨论!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发实战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档