久久久久无码精品,四川省少妇一级毛片,老老熟妇xxxxhd,人妻无码少妇一区二区

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

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

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

  在做自動(dòng)化測(cè)試的過(guò)程中,有時(shí)候需要測(cè)試一個(gè)業(yè)務(wù)流程特定的部分, 這個(gè)特定部分可能是接口,它往往需要依賴前期產(chǎn)生的數(shù)據(jù)輸出作為輸入,這個(gè)時(shí)候,重新跑一遍前邊流程來(lái)獲得需要的數(shù)據(jù)顯然不合理, 那么利用后端開(kāi)發(fā)發(fā)布出來(lái)的web service來(lái)直接生成所需數(shù)據(jù)就顯得尤為便捷, 今天我們就來(lái)看如何利用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 是作為一個(gè)API來(lái)消費(fèi)提供的web services, 它有兩個(gè)子命名空間:

  Service :對(duì)象用來(lái)調(diào)用被消費(fèi)的web service提供的方法。

  Factory:提供一個(gè)工廠用來(lái)生成一個(gè)定義在WSDL的對(duì)象或方法的實(shí)例。

  簡(jiǎn)單來(lái)說(shuō)就是service用來(lái)直接調(diào)用web service里的方法,factory用來(lái)生成一個(gè)web service對(duì)象實(shí)例。

  我們用一段代碼來(lái)說(shuō)明:

  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__方法: 實(shí)現(xiàn)了suds client的生成, client的用法如下:

  from suds.client import Client

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

  client = Client(url)

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

  參考代碼里__init__方法的print語(yǔ)句,打印出來(lái)了所有可用的方法和類型, 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個(gè)參數(shù),類型為int型。

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

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

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

  suds_inpect.png

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

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

  證明成功,我們?cè)偃B里查下結(jié)果:

  可以看出,有一條心的記錄添加出來(lái)。

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

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

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

辦公自動(dòng)化論文05-31

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

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

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

辦公自動(dòng)化是什么10-10

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

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

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

OA系統(tǒng)辦公自動(dòng)化要點(diǎn)05-20