背景:前⼀段时间,为公司某系统进⾏⾃动化测试。系统的注册页⾯需要输⼊⼿机号,并点击获取验证码验证⼿机号。 当然,测试时的⼿机号是假的,⽽且验证码也可以随便填写,供测试所⽤的系统也没有对验证码的正确性进⾏校验。但是,最近提测的系统不知被调⽪的程序员们做了什么⼿脚,居然不再允许随便填写验证码,⽽是需要在点击获取验证码后到数据库中查看⽣成的验证码是什么,再在注册页⾯填写该验证码。这对⾃动化测试实在不便(以前我都是让程序直接在验证码输⼊框中输⼊1的……),怎么办呢,总不能点击获取验证码后让程序sleep30秒,期间测试⼈员以迅雷不及掩⽿盗铃之势到数据库中查看验证码,再⼿动填写吧,这样也太不符合⾃动化的意义了。于是,摸索了⼀下Python使⽤MySQL数据库,代码如下:
import MySQLdb
conn = t(host='172.16.20.217',port=3306,user='root',passwd='password',db='krd20150821')
cur = conn.cursor()
# 查询表中最后⼀条数据的验证码字段验证码自动输入
message = str(cur.fetchone())
yzm = filter(lambda x:x.isdigit(), message)
cur.fetchone()执⾏后得到的是⼀个元组,将其转换为字符串,再过滤掉数字之外的字符后,就是最终所需要的验证码。
虽然,代码还有缺陷,如果有多⼈同时在测试,则得到的验证码便有可能是别⼈⼿机号的验证码。不过还好,只有我⽤它测试,够⽤就好。