<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • WebService自動化-WSDL調(diào)用

    時間:2024-06-21 13:55:44 Web Services 我要投稿
    • 相關(guān)推薦

    WebService自動化-WSDL調(diào)用

      在做自動化測試的過程中,有時候需要測試一個業(yè)務(wù)流程特定的部分, 這個特定部分可能是接口,它往往需要依賴前期產(chǎn)生的數(shù)據(jù)輸出作為輸入,這個時候,重新跑一遍前邊流程來獲得需要的數(shù)據(jù)顯然不合理, 那么利用后端開發(fā)發(fā)布出來的web service來直接生成所需數(shù)據(jù)就顯得尤為便捷, 今天我們就來看如何利用suds調(diào)用web service。

      Suds is a lightweight SOAP python client for consuming Web Services.

      The suds Client class provides a consolidated API for consuming web services. The object contains (2) sub-namespaces:

      service

      The service namespace provides a proxy for the consumed service. This object is used to invoke operations (methods) provided by the service endpoint.

      factory

      The factory namespace provides a factory that may be used to create instances of objects and types defined in the WSDL.

      suds Client 是作為一個API來消費提供的web services, 它有兩個子命名空間:

      Service :對象用來調(diào)用被消費的web service提供的方法。

      Factory:提供一個工廠用來生成一個定義在WSDL的對象或方法的實例。

      簡單來說就是service用來直接調(diào)用web service里的方法,factory用來生成一個web service對象實例。

      我們用一段代碼來說明:

      from suds.client import Client

      class WebServices(object):

      WSDL_ADDRESS = "http://*/services/*/StudentPrivateLessonService.svc?wsdl"

      def __init__(self):

      self.web_service = Client(self.WSDL_ADDRESS)

      print self.web_service

      def is_class_booked(self, class_id, member_id):

      return self.web_service.service.IsClassBooked(class_id, member_id)["ClassBooked"]

      def cancel_clas(self, class_id, member_id):

      parameter = self.web_service.factory.create("CancelClass")

      print parameter

      print dir(parameter)

      parameter.param.Class_id = class_id

      parameter.param.Member_id = member_id

      parameter.param.CancelBy = 'T'

      parameter.param.CancelReason = 'test'

      return self.web_service.service.CancelClass(parameter.param)

      if __name__ == '__main__':

      web_service_class = WebServices()

      print web_service_class.is_class_booked('315983', '23540202')

      print web_service_class.cancel_clas('315983', '23540202')

      以上代碼里:

      WSDL_ADRESS:是我們提供的web service的地址。

      __init__方法: 實現(xiàn)了suds client的生成, client的用法如下:

      from suds.client import Client

      url = 'http://*.?wsdl'

      client = Client(url)

      is_class_booked 方法:使用了client的service這個命名空間,即直接調(diào)用web service 的可用方法。那么如何知道哪個方法如何調(diào)用呢?

      參考代碼里__init__方法的print語句,打印出來了所有可用的方法和類型, print的打印結(jié)果片段如下:

      Suds ( https://fedorahosted.org/suds/ )  version: 0.4 GA  build: R699-20100913

      Service ( StudentPrivateLessonService ) tns="http://tempuri.org/"

      Prefixes (9)

      ns0 = "EFSchools.Englishtown.TeacherTools.Client.ServiceParams"

      ns1 = "EFSchools.Englishtown.TeacherTools.Client.ServiceParams.StudentPrivateLesson"

      *

      ns8 = "http://tempuri.org/"

      Ports (1):

      (BasicHttpBinding_IStudentPrivateLessonService)

      Methods (18):

      *

      CancelClass(ns1:CancelParameter param, )

      *

      IsClassBooked(xs:int class_id, xs:int member_id, )

      *

      Types (47):

      ns4:ArrayOfBatchCancelDetail

      ns4:ArrayOfBookablePLClass

      ns4:ArrayOfBookedPLClass

      *

      從打印結(jié)果可以看出,IsClassBooked方法可以直接調(diào)用,它需要2個參數(shù),類型為int型。

      Cancel_class方法:利用了 client的factory這個命名空間。

      parameter = self.web_service.factory.create("CancelClass")

      創(chuàng)建了Cancel Class這個方法的一個實例,然后通過 print parameter,可以看出這個函數(shù)的參數(shù)組成:

      suds_inpect.png

      它是一個字典,字典的param的值又是一個字典,故我們要調(diào)用這個方法時下需要用Parameter.param.Class_id 這樣的方式來引用。

      下圖是整段代碼的運行結(jié)果:

      證明成功,我們再去DB里查下結(jié)果:

      可以看出,有一條心的記錄添加出來。

      以上,只要給出WSDL的地址,導(dǎo)入suds,通過Client, service, factory這3個類就可以實現(xiàn)web services的自動化調(diào)用,是不是很簡單?

    【W(wǎng)ebService自動化-WSDL調(diào)用】相關(guān)文章:

    XFire創(chuàng)建WebService實例09-14

    調(diào)用javascript08-02

    java調(diào)用cmd命令01-29

    Axis2創(chuàng)建WebService實例教程10-06

    php調(diào)用shell的方法技巧07-15

    分析JavaScript函數(shù)的調(diào)用模式07-20

    關(guān)于PHP引用的調(diào)用方法06-14

    Windows網(wǎng)絡(luò)診斷怎么調(diào)用10-02

    PHP調(diào)用的C代碼整理08-14

    javascript數(shù)組使用調(diào)用方法11-05

    主站蜘蛛池模板: 亚洲日韩一页精品发布| 99在线精品一区二区三区| 精品性影院一区二区三区内射| 久久国产午夜精品一区二区三区| 99久久人妻无码精品系列蜜桃 | 久久精品国产亚洲av水果派 | 国产精品免费大片一区二区| 91国内外精品自在线播放| 亚洲一区精品无码| 日韩精品毛片| 麻豆国产精品VA在线观看不卡| 国产精品久久久久久久午夜片| 亚洲第一精品在线视频| 国内精品在线视频| 国产精品欧美日韩| 97国产精品视频| 国产成人精品白浆久久69| 精品无码av一区二区三区 | 一区二区三区四区精品视频| 99re6在线精品免费观看| 国产精品日韩欧美一区二区三区| 久久水蜜桃亚洲av无码精品麻豆| 亚洲国产精品嫩草影院在线观看| 亚洲麻豆精品国偷自产在线91| 日韩精品一区二区三区中文字幕 | 国产精品igao视频网| 精品无码一区二区三区爱欲| 精品亚洲A∨无码一区二区三区| 国产最新进精品视频| 99久久国语露脸精品国产| 精品一区二区三区免费| 亚洲精品综合一二三区在线| 亚洲精品视频在线| 国产欧美日本亚洲精品一5| 精品久久久久中文字| 欧美黑人巨大videos精品| 亚洲精品国精品久久99热| 亚洲国产精品国产自在在线| 亚洲欧美日韩国产精品一区二区| 亚洲精品国精品久久99热一| 国内精品伊人久久久久AV影院|