簡(jiǎn)介:
在接口測(cè)試工作中為大家所熟知的工具有很多罕扎,如postman、soupUI丐重、jmeter腔召、RF框架......,其大多使用簡(jiǎn)單且功能強(qiáng)大弥臼,但為何還要進(jìn)行接口測(cè)試框架的開(kāi)發(fā)呢宴咧?原因如下:
1根灯、測(cè)試數(shù)據(jù)不可控径缅,無(wú)法進(jìn)行數(shù)據(jù)的初始化操作或操作較復(fù)雜
2掺栅、對(duì)于加密接口限制較多
3、擴(kuò)展能力不足纳猪,測(cè)試報(bào)告的多樣性收集及持續(xù)集成能力較弱
接口自動(dòng)化測(cè)試框架搭建:
1).unittest 是來(lái)解決用例的組織與執(zhí)行
2).HTMLTestRunner 基于unittest單元測(cè)試框的擴(kuò)展氧卧,生成HTML測(cè)試報(bào)告,可以自己定制
3).requests 發(fā)送HTTP接口的庫(kù)氏堤,主要是對(duì)post沙绝,get,PUT鼠锈, DELETE闪檬, HEAD等請(qǐng)求的模擬
步驟一:安裝Python
Python下載地址:https://www.python.org/downloads/
可自行選擇python 3.x的版本進(jìn)行安裝,當(dāng)前選擇的版本為python3.6
步驟二:安裝requests擴(kuò)展庫(kù)
可下載安裝:https://www.pypi.python.org/pypi/requests/
也可在線安裝(cmd 命令行執(zhí)行):pip install requests
步驟三: 安裝xlrd庫(kù) 和 xlwt庫(kù)?
在線安裝:pip install xlrd/xlwt
步驟四:安裝HTMLTestRunner擴(kuò)展
下載地址:http://tungwaiyip.info/software/HTMLTestRunner.html
將下載的HTMLTestRunner.py文件放在python安裝目錄的...\Lib目錄下
以下是HTMLTestRunner.py針對(duì)Python 3.x版本需要修改的地方(轉(zhuǎn)自:博客園-微微笑):
問(wèn)題一:No module named StringIO
原因:python 3 中 沒(méi)有?StringIO 這個(gè)模塊购笆。這里我們需要使用io 這個(gè)模塊來(lái)代替粗悯。
解決方法:
第94行引入的名稱要改,從 import StringIO?改成import io同欠。
相應(yīng)的样傍,539行 self.outputBuffer = StringIO.StringIO()?要改成self.outputBuffer = io.BytesIO()
問(wèn)題二:AttributeError: 'dict' object has no attribute 'has_key'
原因:python 3 字典類(lèi)型的object 已經(jīng)不支持 has_key函數(shù),我們需要使用in 來(lái)進(jìn)行遍歷铺遂。
解決方法:
定位到642行衫哥,if not rmap.has_key(cls): 需要換成 if not cls in rmap:
問(wèn)題三:'str' object has no attribute 'decode'
原因:python3 里面對(duì)字符的操作中,decode已經(jīng)拿掉了襟锐。
解決方法:
定位到772行撤逢,把 ue = e.decode('latin-1') 直接改成 ue = e 。
另外766還有類(lèi)似的uo = o.decode('latin-1')粮坞,改成 uo=o 笛质;
問(wèn)題四 :TypeError: can't concat bytes to str
原因:定位一下,報(bào)在了778行的內(nèi)容escape(uo+ue) 捞蚂。這是因?yàn)槲覀兩厦娼ouo賦值的時(shí)候妇押,走的是else流程,uo被賦值的是bytes類(lèi)型的值姓迅。 而bytes類(lèi)型不能直接轉(zhuǎn)化為str類(lèi)型敲霍。所以我們需要在前面給uo賦值的時(shí)候先將bytes類(lèi)型轉(zhuǎn)換為 str類(lèi)型。
解決方法:
修改768行的?uo = o 丁存,直接改成?uo = o.decode('utf-8') 肩杈。
另外 774還有類(lèi)似的 ?ue = e, 改成?ue = e.decode('utf-8')解寝。
問(wèn)題五:TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and 'RPCProxy'
原因:?python3 ?不支持 print?>> sys.stderr 這種寫(xiě)法扩然,這里定義輸出流的話,采用print("This is print str",file=sys.stderr) 這種方式聋伦。
解決方法:
定位到631行夫偶,把print的語(yǔ)句修改掉界睁,原來(lái)是print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime), 可改成?print('\nTime Elapsed: %s' % (self.stopTime-self.startTime),file=sys.stderr)
問(wèn)題六:TypeError: 'str' does not support the buffer interface
原因:定位一下兵拢,問(wèn)題出在118行翻斟,這里s是str類(lèi)型,我們需要把傳過(guò)來(lái)的s轉(zhuǎn)化為bytes類(lèi)型说铃。
解決方法:
定位到118行访惜,把?self.fp.write(s) 修改為?self.fp.write(bytes(s,'UTF-8')) 即可。
**********書(shū)山有路腻扇,學(xué)海無(wú)涯债热,無(wú)數(shù)個(gè)孤獨(dú)的夜晚,需要一點(diǎn)小小的成就感幼苛!**********