zoukankan      html  css  js  c++  java
  • 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(备注博客园)
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    如果喜欢我的文章,请关注我的公众号

  • 相关阅读:
    基于Token的身份验证--JWT
    在eclipse中使用maven创建springMVC项目
    Mybatis框架插件PageHelper的使用
    java 中==符号的坑
    Gradle project sync failed.
    intellij idea android错误: Missing styles. Is the correct theme chosen for this layout?
    thinkpad win8.1 无线连接受限
    struts2
    在Strust2 使用datatimepicker 标签引发的一系列问题
    struts2中css,js等资源无效 非路径问题(新手问题)
  • 原文地址:https://www.cnblogs.com/VVsky/p/9280374.html
Copyright © 2011-2022 走看看