<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>

            WebService自動化-WSDL調用

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

            WebService自動化-WSDL調用

              在做自動化測試的過程中,有時候需要測試一個業務流程特定的部分, 這個特定部分可能是接口,它往往需要依賴前期產生的數據輸出作為輸入,這個時候,重新跑一遍前邊流程來獲得需要的數據顯然不合理, 那么利用后端開發發布出來的web service來直接生成所需數據就顯得尤為便捷, 今天我們就來看如何利用suds調用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 :對象用來調用被消費的web service提供的方法。

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

              簡單來說就是service用來直接調用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__方法: 實現了suds client的生成, client的用法如下:

              from suds.client import Client

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

              client = Client(url)

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

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

              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

              *

              從打印結果可以看出,IsClassBooked方法可以直接調用,它需要2個參數,類型為int型。

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

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

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

              suds_inpect.png

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

              下圖是整段代碼的運行結果:

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

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

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

            【WebService自動化-WSDL調用】相關文章:

            XFire創建WebService實例09-14

            調用javascript08-02

            java調用cmd命令01-29

            Axis2創建WebService實例教程10-06

            php調用shell的方法技巧07-15

            分析JavaScript函數的調用模式07-20

            關于PHP引用的調用方法06-14

            Windows網絡診斷怎么調用10-02

            PHP調用的C代碼整理08-14

            javascript數組使用調用方法11-05

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看