0. 寫在前面
本人使用Python測試已有多年,略有些皮毛經驗。每次有新員工入職,都會從頭教一遍如何入門上手使用Python進行測試。趁這段有空,整理成文檔,也好方便后續新員工學習。文章如有不妥之處,也請各位不吝賜教^ ^
1. 測試在哪用到Python?
我的答案是:基本哪都可以用到,尤其是有重復的費時費力的任務時。大概羅列一下:
- 持續集成CI (自動部署,測試)
- 自動化測試(后端、前端及客戶端自動化測試)
- 爬蟲、日志分析等工具
2. 入門教程及IDE
-
Python2.7在線教程
http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000
-
《Python核心編程》
PDF鏈接:http://pan.baidu.com/s/1bpzpY6j 提取碼:bk6w
-
pip
pip是一款非常方便的python包管理工具,安裝教程:http://lovesoo.org/windows-install-the-pip-method.html
常用命令如下:
#安裝包 pip install xxx #升級包,可以使用-U 或者 --upgrade pip install -U xxx #卸載包 pip uninstall xxx #列出已安裝的包 pip list
-
pycharm
官網:http://www.jetbrains.com/pycharm/
下載安裝完成后,注冊時選擇License server,輸入:http://idea.imsxm.com
即可激活^ ^
3. 持續集成
目前常用的持續集成工具一般是Jenkins,使用Python可以輕松完成版本構建后的自動部署、自動化測試(主要是BVT測試,功能自動化測試及回歸測試)。
《Jenkins集成taffy進行自動化測試並輸出測試報告》詳見:http://www.cnblogs.com/lovesoo/p/7719138.html
常用的自動部署工具有fabric及ansible。
3.1 fabric
fabric官網:https://github.com/fabric
fabric入門教程:http://lovesoo.org/python-fabric-yuan-cheng-zi-dong-bu-shu-jian-jie.html
3.2 ansible
ansible官網:https://github.com/ansible
ansible中文教程:http://www.ansible.com.cn/
4. 自動化測試
由於本人主要從事后端及部分WEB前端測試,對於客戶端(ios/android)的自動化測試不甚了解,所以在此着重介紹Python在后端接口測試中的應用。
4.1 后端測試
4.1.1 基本流程
后端測試主要時通過測試http,webservice,dubbo(hessian)等類型接口,從而完成對后端組件的功能測試。一般接口基本測試流程如下:
- 用例設計,主要使用MindManager/XMind等腦圖軟件設計接口測試用例,如一個簡單視頻搜索接口(輸入name返回videoName)的用例設計示例如下:
- 轉換為python測試腳本,主要包括用例管理,接口調用及結果校驗等
- 執行腳本完成接口自動化測試
4.1.2 常用框架
這里只介紹目前主流的兩種框架:
-
RobotFramework
-
Nose
目前我們主要使用Nose框架,之前調研了RF框架並實現了幾個接口的自動化測試,個人感覺而言RF上手相對較難,在基礎類庫(keyword)穩定后測試人員只需簡單編寫測試數據驅動即可,對測試人員成長不是很有利,而且Nose框架與pycharm無縫連接,使用更加便捷直觀。
另外,(小小的打個廣告)Taffy是在nose框架基礎進行的二次封裝,可以實現對不同類型的后台接口及WEB頁面自動化測試及性能測試,詳見:https://github.com/lovesoo/Taffy
關於不同類型的測試框架選擇,請參考:http://www.infoq.com/cn/news/2012/06/robot-author-suggest-autotest/
4.1.3 Python常用lib庫
下面介紹使用Python編寫后端接口測試代碼中常用的lib庫:
-
通用lib庫
-
json: https://docs.python.org/2.7/tutorial/inputoutput.html#saving-structured-data-with-json
-
日志模塊:logging https://docs.python.org/2.7/library/logging.html
-
異步並發模塊:concurrent.futures
-
excel相關操作庫:讀取 xlrd、寫入 xlwt、修改 xlutils
-
正則表達式模塊:re
-
日期模塊:time,datetime
-
-
http接口
-
dubbo接口(hessian協議)
python-hessian:https://github.com/theatlantic/python-hessian
Python調用Hessian協議接口示例:http://lovesoo.org/python-called-dubbo-hessian-protocol-interface-example.html
4.1.4 示例demo
以百度首頁搜索為例,寫了比較簡單的Nose框架接口測試demo
詳見:https://github.com/lovesoo/test_demo/blob/master/test_baidu/test_baiduSearch.py
4.2 前端(WEB)測試
Selenium幾乎是現在Python WEB自動化測框架的唯一選擇了
官網地址:http://www.seleniumhq.org/
PDF教程: https://pan.baidu.com/s/1c2IXJWW 密碼: 4r5v
4.3 客戶端(ios/android)測試
Python客戶端(ios/android)自動化主要框架主要有Appium,uiautomator等
Appium: http://appium.io/
uiautomator: https://github.com/xiaocong/uiautomator
5. 工具開發
我們經常會遇到一些需要手工操作、比較繁瑣且耗時的重復性工作。這時就可以考慮是否可以通過現有工具或自己編寫腳本來代替手工操作。在提升工作效率、效果的同時還可以提升自己的編程水平,何樂而不為?
舉例:之前做的一個搜索引擎項目,其中有一個功能是根據歌手的別名搜索歌手,而別名確定需要通過搜索網上的幾大音樂網站來確定。大致簡單梳理邏輯就會發現這是一個完全可以用Python實現的功能,如下:

示例代碼詳見:https://github.com/lovesoo/test_demo/tree/master/SearchArtist
6. Q&A
6.1 學習Python過程時遇到問題如何解決?
-
lib庫及函數相關問題,建議查看官方文檔或書籍
-
其次,百度Google一般基本可以解決問題,另外強烈推薦去stackoverflow搜索提問
6.2 入門后如何提高?
-
實踐 - 總結 - 提高
-
照抄 - 照抄之后的理解 - 重新自己實現