自動化測試之二三事兒

自動化測試里面有三大利器:

  • 語言Python
  • UI自動化工具Selenium
  • 驗收測試框架RobotFramework

巧的是三個利器都有2.x和3.x的版本。本文打算就這個話題來做個小結。

Python

雪諾.png

Python 2

Python 2 發布于 2000 年年底,意味著較之先前版本,這是一種更加清晰和更具包容性的語言開發過程。而先前版本的 Python 應用的是 PEP (Python 增強協議),這種技術規范能向 Python 社區成員提供信息或描述這種語言的新特性。據說2020年也是Python2的終結之年。

Python 3

Python 3 被視為 Python 的未來,是目前正在開發中的語言版本。(最新開發版本為3.7),Python 3 于 2008 年年末發布,重點是清理代碼庫并刪除冗余,清晰地表明只能用一種方式來執行給定的任務。


差別1:Print

在 Python 2 中, print 被視為一個語句而不是一個函數,這是一個典型的容易弄混的地方,因為在 Python 中的許多操作都需要括號內的參數來執行。如果在 Python 2 中你想要你的控制臺輸出 ”Winter Is Coming”,你應該寫下這樣的 print 語句:

print "Winter Is Coming"

在使用 Python 3 時,print()會被顯式地視為一個函數,因此要輸出上面相同的字符串,你可以使用這種非常簡單且易于使用的函數語法:

print('Winter Is Coming')

這種改變使得 Python 的語法更加一致,并且在不同的 print 函數之間進行切換更加容易。就方便性而言,print()語法也與 Python 2.7 向后兼容,因此您的 Python 3 print()函數可以在任一版本中運行。

差別2:支持 Unicode
還是上面那一個例子,如果你在Python2里想輸出“凜冬已至”,當直接使用print時,

print '凜冬已至'

會遇到類似于以下的異常:

Non-ASCII character '\xe5' in file D:/Python/Demo/2.1.1.py on line 2, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

這是因為Python 2 默認使用 ASCII 字母表,因此當您輸入“凜冬已至”時, Python 2 將以 ASCII 格式處理字符串。被限定為在多種擴展形式上的數百個字符,用ASCII 進行字符編碼并不是一種非常靈活的方法,特別是使用非英語字符時。

要使用更通用和更強大的Unicode字符編碼,這種編碼支持超過128,000個跨越現今和歷史的腳本和符號集的字符,你必須輸入

u“凜冬已至”

, 前綴 u 代表 Unicode。

Python 3 默認使用 Unicode,這節省了程序員多余的開發時間,并且您可以輕松地在程序中直接鍵入和顯示更多的字符。因為 Unicode 支持更強大的語言字符多樣性以及 emoji 的顯示,所以將它作為默認字符編碼來使用,能確保全球的移動設備在您的開發項目中都能得到支持。

至于是為什么會使用 asscii 作為默認編碼,原因在于 Python 2 出來的時候還沒出現 Unicode。

另外可以使用到Built-in里面的另外兩個函數:decode和encode

decode的作用是將其他編碼的字符串轉換成unicode編碼,如str1.decode('gb2312'),表示將gb2312編碼的字符串str1轉換成unicode編碼。

encode的作用是將unicode編碼轉換成其他編碼的字符串,如str2.encode('gb2312'),表示將unicode編碼的字符串str2轉換成gb2312編碼。

Python2和3在一些函數或者庫的處理上還有很多不一樣的地方,大家可以繼續慢慢摸索,放一個網上傳的Python2和3區別的神圖(最好無限放大來查看):

Python2和3區別.png

Selenium

Selenium是一組web自動化測試工具集,它由以下幾個部分構成:

  • Selenium IDE(Integrated Development Environment) 這是Firefox瀏覽器的一個插件,用于錄制和回放selenium測試腳本。

  • WebDriver和RC 它提供了各種編程語言API的支持,例如java、python、ruby、php、.net等等,能夠與不同的瀏覽器進行交互,驅動瀏覽器進行自動化測試。

  • Grid 它提供了分布式測試和并行測試的能力,能夠幫助我們大幅的減少測試的執行時間。

Selenium2和Selenium3的關系其實用下面的一張圖就可以說清楚:

Selenium變化圖.png

相比較于Selenium2來說,Selenium 3.0(2016年7月左右發布)有了更新的特性加入,尤其是對Edge和safari原生驅動的支持,Edge驅動由MS提供,safari原生驅動由Apple提供。

具體來說,Selenium3.0的更新內容包括以下:

  • 去掉了對selenium rc的支持。

  • 全面擁抱java 8。

  • 支持macOS (Sierra or later),支持官方的safaridriver

  • 通過ms官方的webdriver server支持Edge瀏覽器。又是一個官方的版本,ms表示堅決支持webdriver協議的內容,這也意味著以前性能及穩定性都很差勁的ie driver應該逐漸被淘汰掉了。

  • 只支持ie 9.0版本以上。

  • 通過Mozilla官方的geckodriver來支持firefox。

總而言之,selenium 3.0在支持的原生驅動方面更為豐富,在2.0的基礎上有了更多的改進。對于各位寫自動化測試腳本的大家來說,最直觀的感受應該就是2.0的時候支持不同的瀏覽器需要下載不同的瀏覽器驅動程序,3.0的時候只用下載一個geckodriver就搞定了。


RobotFramework

RobotFramework3.0.2(目前Pypi上的最新版本)的發布聲明上聲稱:

Starting from Robot Framework 3.0, tests are executed from the command line using the robot script or by executing the robot module directly like python -m robot or jython -m robot. Older Robot Framework versions have Python interpreter specific pybot, jybot and ipybot scripts that still work but will be deprecated and removed in the future.

可以看出來RF3對測試腳本的執行上方式上有了微妙的更改,更大的變化是RF3是可以支持Python3編寫的腳本。只是因為wxPython工具底層還未支持Python3的原因,RIDE目前還是只能在Python2的環境下運行。

RF上對于Selenium庫的依賴以前有一段時間是Robotframework-Selenium2Library來支持,不過從最新的發布來看, SeleniumLibrary重新奪回了主動權:

SeleniumLibrary works with Selenium 2.53.6 or newer, including Selenium 3. It supports Python 2.7 as well as Python 3.3 or newer. In addition to the normal Python interpreter, it works also with PyPy and Jython.

綜上所述,目前的自動化測試的環境可以用以下的三駕馬車來搭:

Python 3.x + Selenium 3.x +Robotframework 3.x

歡迎來到3字頭的時代,終于不用再2了~~~

3月的獅子.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,836評論 6 540
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,275評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,904評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,633評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,368評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,736評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,740評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,919評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,481評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,235評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,427評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,968評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,656評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,055評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,348評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,160評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,380評論 2 379

推薦閱讀更多精彩內容