python接口自動化41-suds測試webservice接口


前言

webservice 的接口,前面已經掌握了在 postman 上做接口測試,接下來使用 python 代碼測試 webservice 接口

環境准備

先使用 pip 安裝suds 庫: pip install suds-jurko

>pip install suds-jurko
Collecting suds-jurko
  Downloading suds-jurko-0.6.zip (255 kB)
     |████████████████████████████████| 255 kB 6.2 kB/s
Using legacy 'setup.py install' for suds-jurko, since package 'wheel' is not installed.
Installing collected packages: suds-jurko
    Running setup.py install for suds-jurko ... done
Successfully installed suds-jurko-0.6

Client建立連接

創建websercive對象,返回全部方法,url是訪問的webservice地址后面帶上?wsdl

from suds import client

# webservice地址
url = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl"

# 創建webservice對象
cli = client.Client(url)
print(cli)  # 查看全部方法

結果返回

Suds ( https://fedorahosted.org/suds/ )  version: 0.6

Service ( MobileCodeWS ) tns="http://WebXml.com.cn/"
   Prefixes (1)
      ns0 = "http://WebXml.com.cn/"
   Ports (2):
      (MobileCodeWSSoap)
         Methods (2):
            getDatabaseInfo()
            getMobileCodeInfo(xs:string mobileCode, xs:string userID)
         Types (1):
            ArrayOfString
      (MobileCodeWSSoap12)
         Methods (2):
            getDatabaseInfo()
            getMobileCodeInfo(xs:string mobileCode, xs:string userID)
         Types (1):
            ArrayOfString

返回了2個方法getDatabaseInfo() 和 getMobileCodeInfo(xs:string mobileCode, xs:string userID)
通過瀏覽器訪問也可以看到對應的方法和請求參數http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx

調用service接口

先測試第一個接口: getDatabaseInfo
獲得國內手機號碼歸屬地數據庫信息
輸入參數:無;返回數據:一維字符串數組(省份 城市 記錄數量)。

調用service接口的格式:cli.service.方法名稱(參數)

from suds import client
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/


# webservice地址
url = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl"

# 創建webservice對象
cli = client.Client(url)
# print(cli)  # 查看全部方法

tels = cli.service.getDatabaseInfo()
print(tels)

於是可以返回結果

(ArrayOfString){
   string[] = 
      "全部 數據 265903",
      "安徽 安慶 658",
      "安徽 蚌埠 456",
      "安徽 亳州 489",
      "安徽 巢湖 323",
      "安徽 池州 281",
      "安徽 滁州 555",
      "安徽 阜陽 885",
      "安徽 合肥 1253",
      "安徽 淮北 310",
      "安徽 淮南 380",
      "安徽 黃山 256",
......
}

getMobileCodeInfo

獲得國內手機號碼歸屬地省份、地區和手機卡類型信息
輸入參數:mobileCode = 字符串(手機號碼,最少前7位數字),userID = 字符串(商業用戶ID) 免費用戶為空字符串;
返回數據:字符串(手機號碼:省份 城市 手機卡類型)。

測試
若要使用 HTTP POST 協議對操作進行測試,請單擊“調用”按鈕。

以下是 SOAP 1.2 請求和響應示例。所顯示的占位符需替換為實際值。

POST /WebServices/MobileCodeWS.asmx HTTP/1.1
Host: ws.webxml.com.cn
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://WebXml.com.cn/getMobileCodeInfo"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <getMobileCodeInfo xmlns="http://WebXml.com.cn/">
      <mobileCode>string</mobileCode>
      <userID>string</userID>
    </getMobileCodeInfo>
  </soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <getMobileCodeInfoResponse xmlns="http://WebXml.com.cn/">
      <getMobileCodeInfoResult>string</getMobileCodeInfoResult>
    </getMobileCodeInfoResponse>
  </soap:Body>
</soap:Envelope>

很明顯這里有2個參數需要傳,按上面文檔的提示傳對應的參數名稱和值就行了

from suds import client
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/


# webservice地址
url = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl"

# 創建webservice對象
cli = client.Client(url)
print(cli)  # 查看全部方法

# 輸入參數:mobileCode = 字符串(手機號碼,最少前7位數字),
# userID = 字符串(商業用戶ID) 免費用戶為空字符串
result = cli.service.getMobileCodeInfo(mobileCode="152215501xx",
                                       userID="")
print(result)

結果返回:

152215501xx:上海 上海 上海移動全球通卡

使用 python 的 suds 庫測試 webservice 其實更簡單了,不用看那些繁瑣的xml格式的數據了,根據接口文檔傳對應的參數即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM