【软件测试: jmeter工具】OS进程取样器调用python

在jmeter中有时候需要调用自定义函数进行加密、解密等拓展功能

本文通过识别验证码处理登录验证码为例,通过OS进程取样器,调用python函数实现

识别验证码的python函数源码

Python 复制代码
import base64
from io import BytesIO
from PIL import Image
import sys
import ddddocr

def Save_captcha_picture(b64_code):
    image_base64 = b64_code
    # 对base64字符串进行解码
    image_data = base64.b64decode(image_base64)

    # 使用BytesIO创建一个可读的字节流
    image_stream = BytesIO(image_data)

    # 使用PIL打开字节流中的图片
    image = Image.open(image_stream)

    # 保存图片到文件系统
    image.save("captcha.png", 'PNG')  # 保存为PNG格式,你也可以根据需要选择其他格式


# 识别验证码
def captcha_code_recognition_func(img):
    """
    识别验证码的函数
    :param img: 图片
    :return: 验证码字符串
    """

    # 创建DdddOcr对象,show_ad=False可以关闭启动时的广告
    ocr = ddddocr.DdddOcr(show_ad=False)
    # 打开验证码图片文件并读取
    with open(img, 'rb') as f:
        img_bytes = f.read()  # 读取图片文件的字节数据
    # 使用classification方法进行验证码识别
    res = ocr.classification(img_bytes)

    # 打印识别结果
    print({"CaptchaValue": res})
    # return res

if __name__ == '__main__':
    Save_captcha_picture(sys.argv[1])
    captcha_code_recognition_func("captcha.png")

举例的图片是通过base64编码返回的, 所以

  • 第一步通Save_captcha_picture()函数将Base64编码转换为图片,保存到本地

  • 通过captcha_code_recognition_func() 识别图片中的验证码, 通过ddddocr库进行识别

  • sys.argv[1]: 接收命令行调用时的参数

将上述代码写入python文件

直接调用python文件

  • 命令: 直接使用python, 本地已经安装了python环境

  • 工作目录: 配置python文件的文件目录,注意:此处可以包含中文路径

  • 命令行参数: 传递的第一个参数为python文件的名称, 传递的第二个参数为python文件执行时要传的参数,如果有第二个参数,继续增加参数

实际的执行命令效果是 python py文件 参数1

执行结果

识别出的验证码

结果可通过json提取器提取

通过.bat文件调用

第一步:创建一个 test.bat文件,指定执行py文件的命令

Python 复制代码
python C:\Users\74212\Desktop\temp\test\Base64_img.py %1 

配置OS进程取样器

  • 命令: 制定要运行的bat文件

  • 命令行参数: 传递参数, 替换bat 文件中的 %1

执行结果

通过正则表达式提取值

输出值的提取

在函数中,将最后的结果通过print()打印出来,可以在os提取器的响应界面进行展示

将展示的结果通过正则提取器或者json提取器,可以提取出变量

正则表达式提取

json提取器提取

相关推荐
njsgcs9 小时前
sse mcp flask 开放mcp服务到内网
后端·python·flask·sse·mcp
一人の梅雨9 小时前
1688 店铺商品全量采集与智能分析:从接口调用到供应链数据挖掘
开发语言·python·php
阿巴~阿巴~9 小时前
测试用例设计万能公式:功能到安全
软件测试·测试
小何好运暴富开心幸福9 小时前
C++之日期类的实现
开发语言·c++·git·bash
威风的虫10 小时前
JavaScript中的axios
开发语言·javascript·ecmascript
老赵的博客10 小时前
c++ 是静态编译语言
开发语言·c++
Terio_my10 小时前
Python制作12306查票工具:从零构建铁路购票信息查询系统
开发语言·python·microsoft
消失的旧时光-194310 小时前
Kotlin when 用法完整分享
android·开发语言·kotlin
万粉变现经纪人10 小时前
如何解决 pip install -r requirements.txt 约束文件 constraints.txt 仅允许固定版本(未锁定报错)问题
开发语言·python·r语言·django·beautifulsoup·pandas·pip
站大爷IP10 小时前
Python定时任务实战:APScheduler从入门到精通
python