背景:要求寫一套介面測試工具。過程中遇到了webservice介面的問題,遂寫下本篇文章。
階段問題1:
需要利用資料驅動,然後讀取excel中的資料並直接呼叫。但是webservice介面與http介面不同。http介面呼叫是這樣的:
request(method=』』,url=』』,param=』』)
只需要傳入對應的url,引數就可以了。
但是webservice介面呼叫是這樣的:
client.service.函式(引數)這裡的函式是我們可以寫入的。 此時我們如果需要呼叫可以這樣:
eval(「client.service.」).format(method,data)
下面問題就來了,這裡的data,我們並不知道有幾個引數。這個時候我想了乙個辦法:
eval(「client.service.」).format(method,*data)
data傳過來是乙個list,那麼我就將data這個list進行解包。但是這樣好像行不通?
因為格式化引數的時候我沒有辦法指定具體有乙個引數,難道不用指定引數個數?用{}{}?這樣也行不通。
解決方法,反向思想:
eval(「client.service.(*)」).format(method,eval(data))
解釋一波:
首先eval(data) ,這裡會是這樣的資料 [『param1』,』param2』,』param3』]
method假設是 mymethod
那麼format之前是這樣的
eval(「client.service.(*)」).format(mymethod,[『param1』,』param2』,』param3』])
format 以後是這樣的
「client.service.mymethod(*[『param1』,』param2』,』param3』])」
這樣就會直接去呼叫我們的函式,並且將我們的list轉換成我們需要的方法,也就是這樣的:
client.service.mymethod(『param1』,』param2』,』param3』)
此問題終結。
webservice介面與HTTP介面
推薦文章 真的寫的很詳細 webservice介面與http介面區別 http介面走http協議,通過路徑來區分呼叫方法,請求報文一般是key value形式的,返回報文一般是json串,常用的是get和post方法來請求。webservice介面走的soap協議,通過http傳輸,請求報文和返回報...
iOS 呼叫Webservice介面
1.寫請求體 寫請求體的時候要注意soap的版本,有的是1.1,有的是1.2 可以去檢視pc上的請求體資料參照部落格中的寫法修改 2.進行請求 將下面部落格中的 整理下複製貼上就好 3.請求完成,解析xml,轉為字典型別,呼叫下面的方法 nsdictionary dictionaryforxmlst...
Web Service介面設計
web service介面設計 鑑於ws介面的呼叫方式和普通的api呼叫方式不一樣,因此在設計ws介面時應該有一些其他的考量。以下是我的一些想法,做磚拋了。1 介面命名的自描述性必須好。有時候檢視乙個ws會通過wsdl的方式檢視,尤其是在跨平台的時候,乙個自描述性好的api可以清楚的描述乙個serv...