一、利用cmd命令安裝第三方庫html
openpyxl 同時支持讀寫操做,支持的Excel是以.xlsx結尾的文件。json
命令: pip install openpyxlcookie
【命令:pip install requests (安裝http請求requests也是同樣的)】session
二、新建Excel文件app
新建Excel的時候,須要在電腦上新建一個後綴爲xlsx的文件,再經過複製粘貼的方式放到PyCharm工具裏邊。函數
------複製粘貼---------->工具
三、操做工做簿post
引入工具包:from openpyxl import load_workbook學習
打開工做簿:open_wb=load_workbook('demo_excel.xlsx') #傳一個工做簿名稱參數測試
定位表單:sheet=open_wb['Sheet1'] #傳一個表單名,也可以使用get方式獲取表單
定位座標:value=sheet.cell(1,3).value #獲取到第一行第三列的值
更新數據:sheet.cell(5,3).value='abc' #將第五行第三列的值改成abc
保存工做簿(通常放最後):
open_wb.save('demo_excel.xlsx')
#調用save方法保存,但值得注意的是, 當數據更新時,須要關閉Excel表方可保存成功。
四、接口測試:
學習以上知識以後,咱們怎麼經過Python操做Excel作接口測試?get / post
(能夠結合jmeter作接口測試對應記憶)
import requests
url='http://.........com' #URL地址
req=requests.get(url) #發起get請求
req=requests.post(url) #發起post請求
login_data={「mobilephone」:「183.。。。」,」pwd」:「123」} #傳參:http請求是以字典形式傳入的
下一個請求若須要鑑權,則須要從上一個請求中獲取及在下一個請求去發送cookie、session、token,則須要接下來這些操做:
從返回的結果中獲取cookie:(注:Python只識別:cookies,而不是cookie)
假如此處是個簡單的下單(咱們用pay表示)操做:
pay_url="http://........."
pay_data={經過字典傳參}
pay_req=requests.get(參數1,參數2,cookies=req.cookies)
#這種方法只識別前2個值,因此傳入cookie只能以上邊的方法傳入。
查看結果(兩種方法):(http請求返回的數據格式:json、xml、html)
一、res=req.text #三種結果均可以返回
二、res=req.json() #json只能返回結果是json格式的
咱們也能夠經過session方式傳值:(只能傳入1個參數)
s=requests.session #用一個s來接收返回的結果,之後咱們在進行請求時,都用s去傳。
pay_response=s.get(參數1,params=參數2)
那麼,理解上述的知識後,咱們用函數及參數化,就能夠作這個簡單的接口測試了。
首先,建立好咱們的測試用例:如下邊這個表格爲例(注:寫測試用例時,返回結果及比對結果爲空)。
而後,經過咱們的pycharm寫入執行用例的代碼,就能夠妥妥的作接口測試啦。
#Python讀取Excel數據的函數方法:
from openpyxl import load_workbook
def demo_excel(file_name,sheet_name,start,end):
open_wb=load_workbook(file_name)
sheet=open_wb[sheet_name]
data_list=[]
for i in range(start,end):
data_dict={}
data_dict['ID']=sheet.cell(i,1).value
data_dict['TITLE']=sheet.cell(i,2).value
data_dict['METHOD']=sheet.cell(i,3).value
data_dict['URL']=sheet.cell(i,4).value
data_dict['DATA']=sheet.cell(i,5).value
data_dict['CODE']=sheet.cell(i,6).value
data_list.append(data_dict)
return data_list
t=demo_excel('demo_excel.xlsx','Sheet1',2,6)
#發起http請求的函數方法:
import requests
cookie=None
def http_request(req_url,req_data,method):
global cookie
if method=='get':
response=requests.get(req_url,req_data,cookies=cookie)
else:
response=requests.post(req_url,req_data,cookies=cookie)
if response.cookies!={}:
cookie=response.cookies
result=response.text()
return result
#執行測試用例:
open_wb=load_workbook('demo_excel.xlsx')
sheet=open_wb['Sheet1']
for item in t:
print('正在執行第{0}條用例:{1}'.format(item['ID'],item['TITLE']))
url=item['URL']
data=item['DATA']
method=item['METHOD']
result=http_request(url,eval(data),method)
print(result)
#返回結果:
sheet.cell(item['ID']+1,7).value=str(result)
#結果比對:
if result['code']==str(item['CODE']):
RESULT='PASS'
else:
RESULT='FAIL'
sheet.cell(item['ID']+1,8).value=RESULT
open_wb.save('demo_excel.xlsx')