背景:前一段時間,為公司某系統進行自動化測試。系統的注冊頁面需要輸入手機號,並點擊獲取驗證碼驗證手機號。
當然,測試時的手機號是假的,而且驗證碼也可以隨便填寫,供測試所用的系統也沒有對驗證碼的正確性進行校驗。但是,最近提測的系統不知被調皮的程序員們做了什么手腳,居然不再允許隨便填寫驗證碼,而是需要在點擊獲取驗證碼后到數據庫中查看生成的驗證碼是什么,再在注冊頁面填寫該驗證碼。這對自動化測試實在不便(以前我都是讓程序直接在驗證碼輸入框中輸入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()執行后得到的是一個元組,將其轉換為字符串,再過濾掉數字之外的字符后,就是最終所需要的驗證碼。
雖然,代碼還有缺陷,如果有多人同時在測試,則得到的驗證碼便有可能是別人手機號的驗證碼。不過還好,只有我用它測試,夠用就好。