热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【jmeter】利用python生成真实的手机号

背景之前做压测对于手机号的处理一直是使用jmeter随机数生成:${__Random(10000000000,19999999999,mobile)},用着也没啥问题,但今天看了下

背景

之前做压测对于手机号的处理一直是使用jmeter随机数生成:${__Random(10000000000,19999999999,mobile)},用着也没啥问题,但今天看了下生成的手机号:

image

总感觉透露着一股不专业的气息,怎么可能有111开头的手机号格式,百度了一下有没有现成的脚本,发现都是千篇一律的代码也看不太懂,所以考虑还是自己来写。


手机号格式

特地查询了一下目前国内的手机号格式,对于一个手机号,比如说:17612341234,它的组成规律如下表格:

















17612341234
网络识别号地区编码用户号码

由此我们可以发现对于一个手机号来说前3位和4-7位已经是固定了的,查询可知三大运营商的前三位为:

mobile_yd = [
# 移动号码段,更新至198号段,不包含物联网、卫星电话、虚拟号段。
134, 135, 136, 137, 138, 139, 147, 148, 150, 151, 152, 157, 158, 159, 178, 182, 183, 184, 187, 188, 198
]
mobile_lt = [
# 联通号码段,更新至186号段,不包含物联网、卫星电话、虚拟号段。
130, 131, 132, 145, 146, 155, 156, 166, 175, 176, 185, 186
]
mobile_dx = [
# 电信号码段,更新至199号段,不包含物联网、卫星电话、虚拟号段。
133, 149, 153, 173, 177, 180, 181, 189, 191, 199
]

python代码

思路:对于压测来说我们需要一个单独的csv文件存储生成的手机号,并且有的接口对于手机号是有重复性验证的,而且在每次压测前我们都需要先清空旧的手机号文件,然后再生成新的。


定义方法:清空旧文件、写手机号至csv文件

def CleanFile(FileURL):
# 每次打开文件清空旧文件内容
with open(FileURL, 'r+', encoding='UTF-8') as file:
file.truncate(0)
def WriteFile(FileURL,File):
# 写入数据,每写一次就换行一次。
file = open(FileURL, mode='a+', encoding='UTF-8')
file.write(str(File) + '\n')
file.close()
def Result():
# 调用Python脚本执行成功时,在控制台显示信息。
return print('Result:' + 'The Python script executed successfully')

定义方法:生成11位数的手机号

def Mobile_Three():
# 手机号前3位
i = random.randint(1, 100)
if i <= 40:
# 生成40%的移动号码
three = mobile_yd[random.randint(0, len(mobile_yd) - 1)]
elif 40 # 生成30%的联通号码
three = mobile_lt[random.randint(0, len(mobile_lt) - 1)]
else:
# 生成30%的电信号码
three = mobile_dx[random.randint(0, len(mobile_dx) - 1)]
return three
def Mobile_Eight():
# 手机号后8位
eight = random.randint(10000000, 99999999)
return eight
def Mobile():
# 生成11位手机号
mobile = str(Mobile_Three()) + str(Mobile_Eight())
return mobile

定义方法:调用生成手机号的方法并去掉重复的手机号

def WriteMobile(FileURL,data):
i = 0
# 循环生成多少数据
while i mobile = [
Mobile()
]
# 去掉重复的手机号
mobile_old = set(mobile)
mobile_new = list(mobile_old)
# 开始循环写入csv文件
j = 0
while j z = (
mobile_new[j]
)
WriteFile(FileURL, z)
j = i + 1
i = i + 1

最后查看生成的csv文件:

image

完美!


附代码[全]

# -*- coding: utf-8 -*-
# @date : 2021-11-03
# @author : aizhijie
import random
mobile_yd = [
# 移动号码段,更新至198号段,不包含物联网、卫星电话、虚拟号段。
134, 135, 136, 137, 138, 139, 147, 148, 150, 151, 152, 157, 158, 159, 178, 182, 183, 184, 187, 188, 198
]
mobile_lt = [
# 联通号码段,更新至186号段,不包含物联网、卫星电话、虚拟号段。
130, 131, 132, 145, 146, 155, 156, 166, 175, 176, 185, 186
]
mobile_dx = [
# 电信号码段,更新至199号段,不包含物联网、卫星电话、虚拟号段。
133, 149, 153, 173, 177, 180, 181, 189, 191, 199
]
def Mobile_Three():
# 手机号前3位
i = random.randint(1, 100)
if i <= 40:
# 生成40%的移动号码
three = mobile_yd[random.randint(0, len(mobile_yd) - 1)]
elif 40 # 生成30%的联通号码
three = mobile_lt[random.randint(0, len(mobile_lt) - 1)]
else:
# 生成30%的电信号码
three = mobile_dx[random.randint(0, len(mobile_dx) - 1)]
return three
def Mobile_Eight():
# 手机号后8位
eight = random.randint(10000000, 99999999)
return eight
def Mobile():
# 生成11位手机号
mobile = str(Mobile_Three()) + str(Mobile_Eight())
return mobile
def CleanFile(FileURL):
# 每次打开文件清空旧文件内容
with open(FileURL, 'r+', encoding='UTF-8') as file:
file.truncate(0)
def WriteFile(FileURL,File):
# 写入数据,每写一次就换行一次。
file = open(FileURL, mode='a+', encoding='UTF-8')
file.write(str(File) + '\n')
file.close()
def Result():
# 调用Python脚本执行成功时,在控制台显示信息。
return print('Result:' + 'The Python script executed successfully')
def WriteMobile(FileURL,data):
i = 0
# 定义 循环生成多少数据
while i mobile = [
Mobile()
]
# 去掉重复的手机号
mobile_old = set(mobile)
mobile_new = list(mobile_old)
# 开始循环写入csv文件
j = 0
while j z = (
mobile_new[j]
)
WriteFile(FileURL, z)
j = i + 1
i = i + 1
if __name__ == '__main__':
data = 1000000
FileURL = 'D:\\jmeter\\csv_mobile.csv'
MobileFileURL = FileURL
CleanFile(MobileFileURL)
WriteMobile(MobileFileURL, data)
Result()

git仓库地址

https://github.com/aizhijie-yeah-net/jmeter/blob/main/python/python_mobile.py

该脚本可单独运行,只需要修改下csv文件的地址即可。



推荐阅读
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 很多时候在注册一些比较重要的帐号,或者使用一些比较重要的接口的时候,需要使用到随机字符串,为了方便,我们设计这个脚本需要注意 ... [详细]
  • Python如何调用类里面的方法
    本文介绍了在Python中调用同一个类中的方法需要加上self参数,并且规范写法要求每个函数的第一个参数都为self。同时还介绍了如何调用另一个类中的方法。详细内容请阅读剩余部分。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • python3 nmap函数简介及使用方法
    本文介绍了python3 nmap函数的简介及使用方法,python-nmap是一个使用nmap进行端口扫描的python库,它可以生成nmap扫描报告,并帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。文章详细介绍了python-nmap的几个py文件的功能和用途,包括__init__.py、nmap.py和test.py。__init__.py主要导入基本信息,nmap.py用于调用nmap的功能进行扫描,test.py用于测试是否可以利用nmap的扫描功能。 ... [详细]
  • 关于如何快速定义自己的数据集,可以参考我的前一篇文章PyTorch中快速加载自定义数据(入门)_晨曦473的博客-CSDN博客刚开始学习P ... [详细]
  • Python 可视化 | Seaborn5 分钟入门 (六)——heatmap 热力图
    微信公众号:「Python读财」如有问题或建议,请公众号留言Seaborn是基于matplotlib的Python可视化库。它提供了一个高级界面来绘制有吸引力的统计图形。Seabo ... [详细]
  • [翻译]PyCairo指南裁剪和masking
    裁剪和masking在PyCairo指南的这个部分,我么将讨论裁剪和masking操作。裁剪裁剪就是将图形的绘制限定在一定的区域内。这样做有一些效率的因素࿰ ... [详细]
author-avatar
kissbye1993
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有