search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

問答丨用Python做測試,一篇解決所有問題

1、Python的單元測試如何理解與實現?

問題描述:學習瓶頸期.能理解單元測試的原因和簡單原理,但是由於各式各樣的原因(主要是英文差的很)所以不知道怎麼去完成,目前打算使用nose2

不知道是不是可以得到一些幫助

解決辦法:

51Testing會員黃哥回復:

1)首先要搞清楚單元是啥。

2)單元測試的意義。

3)利用測試套件,照著例子寫測試用例

4)講究一點,還得生成一個測試報告,發一個郵件通知一下。照著文檔寫~

2、求適合Python基於數據驅動的測試工具推薦?

解決辦法:

51Testing會員孫景衛回復:

請問測試對象是?python寫的模塊?還是要用Python寫測試工具?建議再詳細描述一下你的需求。

用python的meta class和自省的機制很容易實現一套數據驅動框架的。

3、Python做介面測試,如何帶上Cookie?

問題描述:

#引入需要的module

import http.client, urllib.parse,urllib.request

import http.cookiejar

import http.cookies

import re

#創建請求參數

params = urllib.parse.urlencode({'email':'XXXXXXX', 'password': 'XXXXX', 'origURL': '人人網 領先的實名制SNS社交網路。加入人人網,找到老同學,結識新朋友。','domain':'renren.com'})

#創建請求頭

headers = {"Content-type": "application/x-www-form-urlencoded; charset=UTF-8",

"Accept": "text/plain",

"Referer":"應屆生校招網 [即人人校招]-應屆生2013年校園招聘、宣講會,應屆生找工作職位",

"User-Agent":"Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0"

}

#鏈接網站

conn = http.client.HTTPConnection("人人網 領先的實名制SNS社交網路。加入人人網,找到老同學,結識新朋友。")

#提交介面請求

conn.request("POST", "/PLogin.do", params, headers)

#獲取請求的響應

response = conn.getresponse

#列印響應的狀態碼,以字典列印出返回的頭部msg

print(response.status, response.reason,response.msg)

dic=response.msg

#關閉鏈接

conn.close

#生成一個http.cookiejar對象

cj=http.cookiejar.CookieJar

#新建一個opener

opener=urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))

#植入opener

urllib.request.install_opener(opener)

#打開重定向的網址

h=opener.open(L)

h2=h.read.decode('utf-8')

#列印所有的cookie

for item in cj:

print(item.name,'=',item.value,'\n')

if item.name=='xnsid':

headers['xnsid']=item.value

rtk=re.findall(r'\'\w+\'',str(h2))

print(rtk[1][1:-1])

params2={}

params2['_rtk']=str(rtk[1][1:-2])

params2=urllib.parse.urlencode(params2).encode

conn2=http.client.HTTPConnection('xiaozhao.renren.com')

conn2.request('POST','/message/count',params2,headers)

response2=conn2.getresponse

print(response2.status,response2.reason,response2.msg)

print(response2.read.decode('utf-8'))

conn2.close

解決辦法:

(1)51Testing會員雲層回復:

如果你使用的http組件支持添加cookie,那最好

如果沒有隻能通過header加一個名字為cookie的header,但這樣的缺點是會覆蓋原有的內部cookie

一般做的比較成熟的http組件都是有獨立的cookie管理對象的

(2)51Testing會員回復:

介面測試推薦使用requests庫

requests支持帶持久 Cookie 的會話

s = requests.Session

s.post(url, headers=headers, data=params)

就解決你的問題了

4、Python如何寫關於抽象類的單元測試?

問題描述:

從abc中import了ABCMeta和abstractmethod,實現了一個抽象類,目前想用nose(目前僅僅是unittest)對這個類進行單元測試,不知道有沒有比較好的方式?(Python版本2.7的)

在Stackoverflow上給了幾種方式:

1、通過一個其他類實現抽象類方法測試:unit testing;

2、構建特殊函數,提取方法創建新類:oop - python;

Python中對抽象類測試有無必要?上述方式是否有效或者有無其他方式進行測試?

解決方法:

51Testing會員回復:

已解決,raise NotImplementedError,通過一個子類來實例方法。

算了,補充完整吧:

1、一般來說抽象類是沒有實例化方法的,這個和單純的abstractmethod不同,abstractmethod會在調用的時候檢驗是否實現功能,所以如果想要測試抽象類中的抽象方法,需要子類繼承這個抽象類。

2、繼承了以後調用方法單純的pass是看不出來效果的,raise的方法可以拋出異常,這樣可以通過捕獲異常進行測試。Nose中nose.tools提供了raises的裝飾器,在測試函數前添加raise的異常就可以檢驗到該抽象類是否被調用到。

註:

1、關於異常,NotImplementedError比較恰當,官方文檔有說明:

exception NotImplementedError

This exception is derived from RuntimeError. In user defined base classes, abstract methods

5、Mac OS 下如何安裝Python測試環境?

問題描述:

初學Python,跟著教程《Learn Python The Hard Way》做到習題46,通過pip安裝nose、virtualenv和distribute,顯示安裝成功,但之後執行nose相關命令都是顯示"-bash: nosetest: command not found",而執行項目骨架測試(tests和NAME目錄中包含__init__.py,tests下面也建了一個NAME_tests.py的文件),總是顯示 "No such file or directory"

請問到底如何才能把nose、distribute和virtualenv安裝成功啊

解決辦法:

(1)51Testing會員黃哥回復:

pip install nose后,如果在cmd下或 Linux 終端下 輸入 nosetests 提示"-bash: nosetest: command not found"

這個說明你的nose還沒有安裝好。

先按照下面圖片

(2)51Testing會員小鐵匠回復:

跟樓主一樣,在學習《Learn Python The Hard Way》配置環境的時候遇到各種問題,本人是mac環境,pip install 完之後 pip list nose安裝完成之後list中也有nose,import nose也是沒有問題的,但是"-bash: nosetest: command not found"。在這裡強力推薦virtualenv,優勢如下:

1)在沒有許可權的情況下安裝各種套件(在MAC下被折磨得要死,各種ERROR)不同應用

2)可以使用不同的套件版本,各個環境相對獨立,套件升級不影響其他應用

最後完美解決樓主問題

6、如何著手開始Python程序的測試驅動開發?

51Testing會員kaelzhang回復:

我用python做過生命遊戲的TDD練習,首先必然是選用一個測試框架,然後循環三步軍規:編寫用例,實現用例,重構

7、Web測試(Java項目)選擇Ruby還是Python?

問題描述:

最近被公司安排做測試,其實本人非專職研發,但既然有這個機會也想多學點東西,現在打算學一門腳本語言希望幫助到我日後的工作。不知道該選Ruby還是Python,或者其他?青菜蘿蔔各有所愛,各種語言也有各自的長處,對於我來說,選擇的首要標準是最好能有一本比較系統的書/教程我好從中學習。

解決辦法:

51Testing會員回復:

Robot Framework作為測試框架,Selenium 作為測試庫,如果是java項目,可以建議使用jython 作為測試基礎,方便與被測系統的交互。如果不是專職研發人員,我真誠的建議你不要把使用自動化測試作為測試工作的重點。你更應該學習的是測試領域的知識,自動化測試通常只能錦上添花,只有深刻領悟測試領域的知識才能雪中送炭。對於書籍來說,《軟體測試經驗與教訓》,《完美軟體 對軟體測試的各種幻想》是我讀過的軟體測試最好的書籍。探索性測試和啟發性測試策略 是我認為未來最有前途的軟體測試方向。

8、為什麼目前招測試人員都要求會Python呢?

解決辦法:

(1)51Testing會員石頭哥回復:

應該是大部分吧(我們公司就沒有這個要求 )!主要是腳本語言就那麼幾種。shell,ruby,perl,python,tcl等。但是對於公司來說,腳本語言最好統一(原因就不用說了)。據我所知,騰訊目前應該正在走統一的道路(選擇的正是python)。原因大概就是python的適用性更好或者內部用python的人最多吧!所謂沒有最好,只有最合適。

至於python的優點,對於我這個還在用shell解決問題的測試人員來說,就真的沒有發言權了。根據個人接觸經驗來看,就是語法很清楚,也很嚴謹,這樣當多人一起維護的話,出錯的概率應該會低點。

我目前的了解,Python並不是必須的,而是測試人員的加分項。

因為Python是腳本語言,非常適合編寫「自動化測試腳本」,自動化測試可以一定程度上替代傳統的人工測試,提高一定時間內的測試覆蓋度,提高測試工作效率。我之前的公司,測試工程師會寫點腳本(但不是用Python),另一個測試工程師不會寫。所以同等時間下,前者的工作總是很快完成,而且不容易遺漏(這個最重要了)。

這樣,企業當然更歡迎會Python的測試工程師。

End.

51Testing:專註於軟體測試領域,自主研發軟體測試工具,為客戶提供全球領先的軟體測試整體解決方案。



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦