当前,我国金融体系内交易量持续增长,业务场景日趋复杂。系统交易量的增加,临时产生的集中业务需求,都会使服务器面临考验,因此,需要对系统进行性能测试。

在金融系统中,报文处理是必不可少的。各大金融机构间通过报文的交换进行信息流的传递,从而最终实现资金的跨机构流转。在对金融系统的性能测试中,自然也少不了与报文打交道,而性能测试往往伴随着大量数据准备。

那么,如何高效地生成大量报文呢?

试想这样一种场景:某金融机构需在特定时间内进行一波资金划转,该业务是新增交易,且交易数量较大,需要准备大量报文对服务器进行性能测试。数据的准备有很多方法,其中Python由于易上手且兼具灵活性而逐渐受到测试工程师们的青睐。今天,我们就来介绍一下如何通过Python批量生成测试报文。

批量报文准备

上述例子中提到的报文一般可分为单交易报文和批量交易报文两种。单交易报文的获取是非常容易的,而批量交易报文则可通过单交易报文生成,Python中的pyperclip模块为实现这一功能提供了便捷的支持。pyperclip中的copy和paste方法分别可实现向剪切板发送文本和从剪切板读取文本。下面的代码实现了读取单交易信息,并生成指定数量批量交易的功能:

import pyperclip
# 交易数量
dealNum = 2
# 读取单交易信息并复制到剪贴板
with open(r'test.txt', encoding='utf-8') as f:txt = f.read()
pyperclip.copy(txt)
# 生成批量交易
res = ''
dealInfo = pyperclip.paste()
for i in range(dealNum):res = '{}\n{}'.format(res, dealInfo)
print(res)

当交易数量为2时,生成报文示例如下:

<tag>测试报文</tag>
<tag>测试报文</tag>

交易号生成

在一笔交易中,往往包含标志交易唯一性的定长交易号。从上一步中,我们得到了拥有相同信息的若干笔交易,但由于交易号相同,直接发送上述交易报文会因重复编号导致记账失败。

我们很容易想到,可以通过random函数生成随机数来模拟不同交易,但如何确保编号的唯一性呢?random模块中包含一个名为sample的方法,通过它,可以生成不重复的随机数。例如,通过以下代码可得到5个不重复的8位随机数:

import random# 随机生成8位交易号
traNo = random.sample(range(10**7, 10**8), 5)
print(traNo)

返回生成的随机数列表,如下:

[69244291, 71447069, 95104116, 91919619, 50861438]

交易号替换,目标报文生成

在前面步骤均已完成的前提下,下一步就可以进行编号的替换了。报文中的交易号一般形式为“<标签>编号</标签>”,对于此类数据的替换,正则表达式是非常有效的手段。Python中的re模块可通过正则表达式进行字符串的匹配,下面的代码通过查找交易标签,对其中的交易编号进行了替换:

import re# file:待替换文件
# numberList:随机交易号列表
def alter_file(file, numberList):fileData = ''i = 0with open(file, 'r', encoding='utf-8') as f:for line in f:if '<tag>' in line:newStr = '<tag>{}</tag>'.format(numberList[i])i += 1line = re.sub(r'<tag>\d+</tag>', newStr, line)fileData += linewith open('result.txt', 'w', encoding='utf-8') as f:f.write(fileData)

在以下示例中,原有的编号已被替换成为了不重复随机数。

实际测试中,结合以上方法,即使上万条交易报文也能轻松准备,为性能测试的开展提供了有力的支持。

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:伤心的辣条 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

Python助力性能测试——报文批量生成相关推荐

  1. 【收藏】Python利用Excel+模板批量生成word文件

    Python利用Excel+模板批量生成word文件 最近帮朋友批量生成小区业主物业费未缴的律师函.朋友那有物业那边的表格数据,包括楼栋-房间号.业主姓名.欠费日期.欠款金额等信息.目的是需要将这些表 ...

  2. python条形码库_python批量生成条形码的示例

    在工作中,有时会遇见需要将数字转换为条码的问题,每次都需要打开条码转换的网站,一次次的转换后截图,一两个还行,但是当需要转换的数量较多时,就会显得特别麻烦,弄不好还会遗漏或者重复,为了解决这个问题,使 ...

  3. 使用Python在Excel中批量生成条形码

    2019独角兽企业重金招聘Python工程师标准>>> 最近在研究盘点机盘点的问题,其中有一部分的商品没有的条形码,就想着自个生成条形码.参考了网上的教程,关于Excel批量生成条形 ...

  4. 【Python实例分析】批量生成海报--自动添加姓名和二维码

    最近参加了老男孩的一个python训练营,里面某项任务是要求在某个海报模板上批量添加姓名和二维码,生成类似下图的海报. 图中我用红色方框标记的是需要修改的地方,先来聊下自己的思路: 1.要进行图片操作 ...

  5. python办公自动化实例(二):批量生成派工单

    场景: 实现效果: 如下图1所示,有如下多条工单,需要向施工单位派发,每条工单都有一个相同模板,如图2所示 图1 图2 通过使用python程序,批量生成这些工单,并转为pdf文件,方便打印,效果如下 ...

  6. Python读取Execl文件批量生成二维码

    #参考他人稍微修改 引入包 import qrcode import xlrd 代码 生成二维码 def create_qrcode(file_name, content): img = qrcode ...

  7. Python小工具_批量生成随机邮箱

    1.需求: 生成随机邮箱 ''' 生成指定长度的随机英文+数字+后缀 邮箱后缀随机获取,不同的邮箱通过列表存储 ''' 2.代码: (1)方法一面向过程实现 import csv import ran ...

  8. python 读取excel表格数据,然后写入word模板,批量生成

    Python 读取excel及批量生成word模板 问题-来源 前几天,我姐遇见了一个难题:需要从excel表格中不断复制数据到word模板中,相当繁琐,询问我有没有解决的办法.于是我百度了一下,借鉴 ...

  9. python批量生成word复工证明

    python批量生成word复工证明 近期不少企业开始复工,老板也给我安排让给所有员工开复工证明,借助python,轻松实现批量生成员工复工材料. 首先需要一个员工信息表格,如下表: 利用表格信息,批 ...

最新文章

  1. echarts 网格属性_设置echarts_的网格样式颜色
  2. 5训练需要更改参数吗_这就是需要的瘦肚子训练,5个杠铃片腹肌训练动作暴汗燃脂瘦腰腹...
  3. java面试题大合集(开发者必看三)
  4. fifo算法模拟_[源码和文档分享]基于C++的请求分页虚拟页面替换算法
  5. C#线程安全的那些事
  6. python将list写入文件_Python:将 list 写入一个 txt 文件
  7. C#环境下的钩子详解
  8. 如何接触到最新的前端动态、最前沿的前端技术
  9. 计算机 运行新ie 命令,(新)计算机应用基础IE浏览器设置学习笔记——精品.doc
  10. Java 输出指定目录下的所有文件
  11. 不用到处找图标了!模库承包你所有的图标素材!
  12. 『转』Dr.Web Security Space 8 – 免费3个月
  13. 将系统常用程序一次性的都安装到位
  14. SPSS安装激活教程(包含网盘链接)
  15. Mac墨刀怎么导出HTML,mockingbot墨刀中文使用说明.pdf
  16. python为什么胶水语言_为什么称python为胶水语言
  17. 手机h5像素_移动端H5页面的设计稿尺寸大小规范
  18. Vmware1个服务器2个桌面,VMware设置虚拟机,并配置远程连接桌面
  19. 编写MTK6737平台的GPIO驱动例程(三)
  20. 第十五周 内部排序一(2)验证交换排序

热门文章

  1. 面试题 16.18. 模式匹配
  2. openresty组成和技术特点
  3. 计算机毕业设计中java多线程与异常处理
  4. 高程数据处理_全国12.5米高程 DEM for WeServer 数据1.0
  5. Win10 下Visual Studio 2017源码编译Paddle
  6. Python+OpenCV:尺度不变特征变换 (SIFT, Scale-Invariant Feature Transform)
  7. C++面试题-指针-指针数组与数组指针
  8. OpenCV创建滑动条函数:createTrackbar()介绍
  9. Android UDP
  10. 【Spring】Service 注入失败,空指针