• python登录验证码生成及自动化测试规避


    在用django写论坛的时候,需要有登录及注册功能。

    故就登录界面后端需要生成随机验证码并传值给前端的代码进行编写如下。

    验证码生成png需要调用到python的图形库

    生成注册码img

    import string
    import sys
    import random
    from PIL import Image,ImageDraw,ImageFont
    
    '''生成随机验证码'''
    
    def Capture(size=4, chars=string.ascii_uppercase + string.digits):
        return ''.join(random.choice(chars) for _ in range(size))
    
    '''验证码生成图片'''
    def Capture_img():
        # 定义使用Image类实例化一个长为120px,宽为30px,基于RGB的(255,255,255)颜色的图片
        img1 = Image.new(mode="RGB", size=(120, 30), color=(255, 255, 255))
        # 实例化一支画笔
        draw1 = ImageDraw.Draw(img1, mode="RGB")
        # 定义要使用的字体
        font1 = ImageFont.truetype('arial.ttf', 36)
        color1 = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
        draw1.text([24,0], Capture(), color1, font=font1)
        # 把生成的图片保存为"capture2.png"格式
        pngPath=sys.path[1]+"\staticcapture2.png"
        print(pngPath)
        with open(pngPath, "wb") as f:
            img1.save(f, format="png")
    

     效果如:

    自动化测试

    由于验证码是随机生成的且存储在session内,所以如果测试要进行自动化测试,方案:

    1.注释验证码的验证,当需要测试验证码功能时,请独立验证

    2.修改源码,将生成的验证码存储备份到其他可获取的地方

    3.调用pyhton的验证码识别类: Pillow(python图像处理库)、OpenCV(高级图像处理库)、pytesseract(识别库)

    第三点仅适用本方式实现的验证码,如果前端是使用滑动等图形效果的,暂时不适用

    且第三点从成本方案上说,不如1/2点快捷。

    生成注册码img


    作者:Vsky
    出处:https://www.cnblogs.com/VVsky/
    交流群:636090586(备注博客园)
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    如果喜欢我的文章,请关注我的公众号

  • 相关阅读:
    HTML5 拖放(Drag 和 Drop)详解与实例
    JS中的六大数据类型
    关于创建本地docker仓库
    关于使用国内dock仓库,网易、DaoCloud
    关于Docker开通远程访问端口2375
    多个消费者监听同一个队列
    SQLite -附加数据库
    解密JDK8 枚举
    LoraLU
    深入理解display属性
  • 原文地址:https://www.cnblogs.com/VVsky/p/9280374.html
Copyright © 2020-2023  润新知