1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

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

        時間:2020-10-05 09:17:19 Web Services 我要投稿

        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)文章:

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

        辦公自動化論文05-31

        oa辦公自動化系統(tǒng)07-17

        OA辦公自動化系統(tǒng)11-10

        辦公自動化學(xué)哪些內(nèi)容11-08

        辦公自動化是什么10-10

        蒙牛的自動化物流系統(tǒng)11-08

        oa辦公自動化系統(tǒng)解析07-03

        小型OA辦公自動化系統(tǒng)06-20

        OA系統(tǒng)辦公自動化要點05-20

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>