首先聲明,本故事純屬虛構,不,是半虛構,如有雷同純屬巧合~
本故事由搜狗測試、搜狗QA、搜狗TEST冠名播出
萬萬沒想到,duang~~搜狗測試公衆號出現了,duang~~它還成長的如此迅速,歡迎廣大測友多多傳播、盡情傳播、傳出新體驗
故事發生在搜狗測試團隊的兩個屌絲身上,愚人節快到了,來看看他們在嘮什麼。。。。。。
提示:他們聊的很興奮,時間有點長,需要一點耐心往下讀哦
雷子:搜狗測試大神們聊了不少高深的測試知識,我屌聊點什麼呢?
小Q:別聊天了,我將要做一個自動化的測試內容,苦於無從下手啊,哪有心情聊天
雷子:哦?哈哈,難兄難弟,雖然困難之處不一樣,但都有難!不過我還會那麼一點,要不我們聊聊常用的自動化python腳本編寫?
小Q:常用的?先嘮兩句啥是python腳本吧,這個我還不知道呢!
雷子:這個我不能定義,搜狗一下就知道,用途太廣,在我們自動化測試裏邊幾乎到處都是它的影子
小Q:那,它長什麼樣子呢?說再多也不如看一眼
雷子:不行啊,你先搜狗一下python是啥,然後我們再開始,也好有共同語言啊
小Q:好的,過會聊!
呼~一顆煙的功夫過去了,小Q過來了
小Q:看完了,大約知道python是什麼了
雷子:那你介紹一下這個是什麼唄
小Q:我只從自動化測試角度說一下理解,顧名思義,它可以長時間自己“自動地”運行測試任務,幫助我們做一些重複性工作
雷子:贊,精闢!我也有一點自己的理解,我覺得它是我們和機器交流的語言,需要“聽、說、讀、寫”,會了這些就能幫助我們做事情了
小Q:不是吧,這怎麼像小學生的作業,總不能不做事情啊
雷子:囧!恩,對,還有“做”
小Q:好了,別賣關子了,來點乾貨,這幾個字太抽象,具體一點是什麼樣子的呢?
雷子:行,那麼不論大小個,按順序說吧。先說“聽”,所謂的“聽”指的是聽得懂,就是知道我們要求它做什麼;“說”指的是能夠說出它知道的任何信息,包括但不限於自動運行在做什麼、到什麼狀態了、運行的結果等等任何你想知道的內容;“讀”指的是你不能一步一步的都告訴它怎麼做啊,那還不如全都自己去做呢,要有一些自動生成的數據,它一看就懂就能自動去執行而不再依靠你一步步的教了;“寫”指的是將他腦子裏邊的東西記錄下來方便我們查閱等;“做”當然是最關鍵的一環,就是幫我們做我們想做的。
小Q:暈死了,不夠具體,放在python講幾個實在點的
雷子:好,那麼今天就非常簡單的聊幾句
舉個小例子:愚人節04月01號快到了,我們有個抽獎活動,假設有個這樣的想法,每個用戶都有一個身份ID,假設這個ID最大是8位的整數,這些整數是已知的,簡單用,就放在一個記事本里邊吧,那麼所有能夠整除401的用戶都有抽iphone6 plus大獎的機會,現在需要知道有多少用戶有機會,怎麼做?
小Q:100000000/8=12500000
雷子:o(╯□╰)o,親,不是每個ID都有用戶,這個8位指的是最大用戶量,實際上僅僅有100W左右的量
小Q:好吧,你又沒說清楚
雷子:好好,我的錯,哈哈,繼續
小Q:這時候要是手動去做,做不到,該怎麼做?
雷子:這時候假設用python,先看python怎麼處理一條數據的吧
第一步:準備一個計數器
第2步:得到這個id
第3步:進行求餘運算
第4步:判斷結果,滿足條件的進行累加計數
第5步:輸出結果
腳本如下:
sum = 0
user_id = 20151314
if user_id %401 == 0:
sum += 1
print sum
小Q:sum 、 user_id、 if 、 print 這麼多全都要背下來啊?那得多難啊
雷子:當然不是了,只有一些基本的需要記住,比如你也可以寫成這樣:
haha = 0
haowan = 20151314
if haowan %401 == 0:
haha += 1
print haha
簡單來講,一般用到一個等於號的時候,左邊的英文都是變量,可以隨意命名,不過一般只能有字母、數字、下劃線且第一個不能是數字
【可能很多人會說這個太簡單,但是對於想要入門自動化測試或者學習python腳本的同學來說,hello word級別的資料有時候會給其帶來更大的信心】
第一行,sum這個叫做變量,你可以隨意命名,比如寫成haha,sum = 0是初始化,表示一開始sum的值是0,這個“等於號”不是數學裏邊的等於號,而是賦值的意思
第二行,和第一行一樣,初始化,其實這個數據應該是100W條數據,稍後再說怎麼弄
第三行,這個是個判斷語句,很容易理解,“如果用戶的id求餘401結果是0”,是不是很容易理解,不過一定注意那個等於號是兩個等於號連起來寫,後邊的冒號表示滿足這個條件的話去做哪些事情
第四行,表示sum = sum + 1,在程序裏邊,原本sum的值是0,如果滿足,則加1,此時sum就是1了,這樣一直下去,最終的數值就是滿足條件的結果
第五行,打印一下最終的結果
如下:
小Q:太簡單了,那麼100W條數據怎麼做呢?
雷子:
還是先看一下腳本:
file_stream = open('d:\\user_id.txt')
lines = file_stream.readlines()
lines_length = len(lines)
sum = 0
for i in range(0,lines_length):
user_id = int(lines[i])
if user_id %401 == 0:
sum += 1
print sum
也可以隨意寫:
du_wen_jian = open('d:\\user_id.txt')
mei_yi_hang = du_wen_jian.readlines()
hang_shu_liang = len(mei_yi_hang)
haha = 0
for mei_yi_ge in range(0,hang_shu_liang):
user_id = int(mei_yi_hang[mei_yi_ge])
if user_id %401 == 0:
haha += 1
print haha
小Q:一下子多了好多,腦細胞不夠用,解釋一下
雷子:好的,就喜歡問問題的人,這樣方便交互、知道該說啥。【歡迎讀者問各種測試有關的問題哦】首先介紹幾個函數:
open()、len()、int()
open()是打開一個文件用的
len()可以理解長求括號裏邊數組或者列表的數量
int()是將字符串轉換成整型
涉及到的名詞過於簡單,如果不知道還是去搜狗一下你就知道了
小Q:繼續
雷子:
第一行,指的是打開含有用戶ID數據的記事本文件,裏邊內容如下:
第二行,獲取文件裏邊的一行行的數據
第三行,計算數據共有多少行
第四行,上邊講過,是初始化計數器
第五行,遍歷每一行
剩下的上邊講過,如果不清楚具體的,搜狗一下【有非常多的例子,或者回復我們】
小Q:哈哈,我會python了
雷子:別急,這個非常的廣大,你可以用它訪問數據庫、上網、解析視頻、畫圖、圖像處理、配置服務器等等,要踏實的去實踐,你不可能會它所有的內容,上邊的小例子,是經過特殊處理的,實際上QQ手機輸入法將會在愚人節做一個活動(這邊要對活動的服務器進行壓力測試,數百萬的加密測試數據就是用python輔助生成的),大獎不清楚是什麼,到時候關注一下那上邊的圖片表情,會有驚喜哦
小Q:好的,我的自動化測試任務心裏有點底了,今後我會經常搜狗上邊搜索一下好的例子進行實踐,順便安裝一下QQ手機輸入法,抽個大獎去,等會,不會真的是401纔行吧?
雷子:哈哈,必然不是啊,那個是假設
呼~小屌的聊天結束了,給你帶來什麼啓發了呢?當然,由於本篇主要是迎合之前有朋友說想要知道一些入門級的實際的使用(當時說的是白盒測試吧),特此記錄個小故事,拋磚引玉,一個好的開始往往預示着更加快速的前進,加油啊親們~~~
如需轉載該篇文章,請註明來自“搜狗測試”