自动化测试——从MySQL数据库中读取短信验证码

背景:前一段时间,为公司某系统进行自动化测试。系统的注册页面需要输入手机号,并点击获取验证码验证手机号。

自动化测试——从MySQL数据库中读取短信验证码

当然,测试时的手机号是假的,而且验证码也可以随便填写,供测试所用的系统也没有对验证码的正确性进行校验。但是,最近提测的系统不知被调皮的程序员们做了什么手脚,居然不再允许随便填写验证码,而是需要在点击获取验证码后到数据库中查看生成的验证码是什么,再在注册页面填写该验证码。这对自动化测试实在不便(以前我都是让程序直接在验证码输入框中输入1的……),怎么办呢,总不能点击获取验证码后让程序sleep30秒,期间测试人员以迅雷不及掩耳盗铃之势到数据库中查看验证码,再手动填写吧,这样也太不符合自动化的意义了。于是,摸索了一下Python使用MySQL数据库,代码如下:

import MySQLdb

conn = MySQLdb.connect(host='172.16.20.217',port=3306,user='root',passwd='password',db='krd20150821')
cur = conn.cursor()
# 查询表中最后一条数据的验证码字段
cur.execute('SELECT MESSAGE_NOTE FROM SYS_TEL_MESSAGE ORDER BY ID DESC LIMIT 1')
message = str(cur.fetchone())
yzm = filter(lambda x:x.isdigit(), message)

cur.fetchone()执行后得到的是一个元组自动化测试——从MySQL数据库中读取短信验证码,将其转换为字符串,再过滤掉数字之外的字符后,就是最终所需要的验证码。
虽然,代码还有缺陷,如果有多人同时在测试,则得到的验证码便有可能是别人手机号的验证码。不过还好,只有我用它测试,够用就好。