Python接口自动化测试系列[V1.0.0][WebServices接口测试]

SOA:Service-Oriented Architecture 面向服务的架构

SOA的提出是在企业级计算领域,意在将紧耦合的系统划分为面向业务的、粗粒度、松耦合、无状态的服务,服务发布出来供其它服务调用,一组互相以来的服务就构成了SOA架构下的系统。
既然是一个架构,那么就认为SOA是包含了运行环境,编程模型,架构风格和相关方法论等在内的一套新的分布式软件系统构造方法和环境,涵盖服务的整个生命周期。
SOA本质上又可以看作是服务的集合,服务之间彼此通信,这种通信可能是简单的数据传递,也可能是两个或者更多的服务协调进行某些活动,服务之间通过某些方法进行链接
所谓服务就是精确定义,封装完善,独立于其他服务所处环境和状态的函数。

Web Services 是一个平台独立的,松耦合的,自包含的,基于可编程的Web应用程序,可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的,互操作的应用程序。
几乎所有的SOA架构都离不开Web Services,它具备以下几个特点:所有的访问都通过SOAP访问进行,用WSDL定义的接口封装,通过UDDI进行目录查找,可以动态改变一个服务的提供方而无需影响客户端的配置,外界客户端根本不需要关心访问服务端的实现
适合大数据量低频率访问符合服务大颗粒度功能,基于性能和效率平衡的要求,SOA服务提供的是大颗粒度的应用功能,而且跨系统边界的访问频率也不会像程序间函数调用那么频繁,通过使用WSDL和基于文本的SOAP请求,可以实现一次性接收处理大量数据
基于标准的文本消息传递为异构系统提供了通信机制:Web Services所有的通信都是通过SOAP进行的,而SOAP是基于XML的,XML是结构化的文本消息,而他也是异构系统间通信最好的消息格式。

SOAP:Simple Object Access Protocol简单对象访问协议

他是基于XML在分散或分布式的环境中交换信息的简单的协议,允许服务提供者和服务客户经过防火墙在互联网上进行通信,其设计是为在一个松耦合,分布的环境中使用XML对等的交换结构化的和类型化的信息提供了一个简单且轻量级机制
XML结构:

<bookstore>
    <book category='python'>
        <title lang="en">Everyday Learning</title>
        <author>davieyang</author>
        <year>2019</year>
        <price>1000.00</price>
    </book>
</bookstore>

SOAP消息结构如下:

<?xml version="1.0">
<soap:Envelope xmlns:soap="http://www.w3.org/2019/11/04/soap-envelope" soap:encodingStyle="http://www.w3.org/2019/11/soap-encoding">
    <soap:Header>
        ...
        ...
    </soap:Header>
    <soap:Body>
        ...
        ...
        <soap:Fault>
            ...
            ...
        </soap:Fault>
    </soap:Body>
</soap:Envelop>

当SOAP消息真正需要在网络上传输的时候,SOAP消息能够与不同的底层传输协议绑定,同时SOAP消息也可以在多种消息传输模式中使用,包括HTTP,SMTP以及多用途网际邮件扩充协议MIME,它还支持从消息系统到远程过程调用协议(RPC)等大量的应用程序,当然大多数情况还是绑定在HTTP协议上传输

WSDL-Web Services Description Language网络服务描述语言

他是一个基于XML的用于描述Web Services以及如何对他进行访问的语言。
WSDL有几个重要组成部分:

  • :Web Services 执行的操作,它可以描述一个WebServices可被执行的操作,以及相关的消息,可以把元素比作传统编程语言中的一个函数库(或者一个模块、一个类)
  • :Web Services 使用的消息,该元素定义一个操作的数据元素,每个消息均由一个或者多个部件组成,可以把这些部件比作传统编程语言中一个函数调用的参数
  • :Web Services使用的数据类型,该元素定义Web Services使用的数据类型,为最大程度上的平台中性,WSDL使用的XML Schema语法来定义数据类型
  • :Web Services使用的通信协议,该元素为每个端口定义消息格式和协议细节

WSDL可看作是Web Services接口的一种标准格式的文档,通过阅读WSDL就知道如何调用Web Services接口

UDDI-Universal Description Discovery and Integration

通用的描述、发现与集成服务,它是一个独立与平台的框架,通过使用Internet来描述服务,发现企业,并对企业服务进行集成

  • 它是一种用于存储有关Web Services信息的目录
  • 它是一种由WSDL描述的Web Services界面的目录
  • 它由SOAP进行通信
  • 它是一种目录服务,企业通过UDDI来注册和搜索Web Services
    wexml.com.cn网站提供了一些已经发布的Web Service接口,例如查询城市天气的、查询手机号归属地的、国内飞机航班时刻表的、火车时刻表的

实操:suds-jurko调用webservices接口查询手机号归属地

C:\Users\Administrator>pip install suds-jurko
Collecting suds-jurko
  Downloading https://files.pythonhosted.org/packages/bd/6f/54fbf0999a606680d27c69b1ad12dfff62768ecb9fe48524cebda6eb4423/suds-jurko-0.6.tar.bz2 (143kB)
     |████████████████████████████████| 153kB 344kB/s
Installing collected packages: suds-jurko
    Running setup.py install for suds-jurko ... done
Successfully installed suds-jurko-0.6


C:\Users\Administrator>python
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from suds.client import Client
>>> url = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl"
>>> client=Client(url)
>>>
>>> print(client)


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




>>> result=client.service.getMobileCodeInfo("15901281916")
>>> print(result)
15901281916:北京 北京 北京移动大众卡
>>>

实操:suds-jurko调用webservices接口查询天气

C:\Users\Administrator>python
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from suds.client import Client
>>> from suds.xsd.doctor import ImportDoctor, Import
>>> url = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl"
>>> imp = Import("http://www.w3.org/2001/XMLSchema", location="http://www.w3.org/2001/XMLSchema.xsd")
>>> imp.filter.add('http://WebXml.com.cn/')
>>> client=Client(url, plugins=[ImportDoctor(imp)])
>>> result=client.service.getWeatherbyCityName(u"北京")
>>> print(result)
(ArrayOfString){
   string[] =
      "直辖市",
      "北京",
      "54511",
      "54511.jpg",
      "2019/11/4 17:56:54",
      "5℃/16℃",
      "11月4日 晴",
      "西南风小于3级转东北风3-4级",
      "0.gif",
      "0.gif",
      "今日天气实况:气温:14℃;风向/风力:西南风 3级;湿度:61%;紫外线强度:中等。空气质量:中。",
      "紫外线指数:中等,涂擦SPF大于15、PA+防晒护肤品。
健臻·血糖指数:不易波动,天气条件好,血糖不易波动,可适时进行户外锻炼。
穿衣指数:较冷,建议着厚外套加毛衣等服装。
洗车指数:较不宜,路面有积水,车子易被溅上泥水。
空气污染指数:中,易感人群应适当减少室外活动。
",
      "5℃/16℃",
      "11月5日 晴转阴",
      "东北风转南风小于3级",
      "0.gif",
      "2.gif",
      "3℃/15℃",
      "11月6日 多云",
      "西南风转东北风小于3级",
      "1.gif",
      "1.gif",
      "北京位于华北平原西北边缘,市中心位于北纬39度,东经116度,四周被河北省围着,东南和天津市相接。全市面积一万六千多平方公里,辖12区6县,人口1100余万。北京为暖温带半湿润大陆性季风气候,夏季炎热多雨,冬季寒冷干燥,春、秋短促,年平均气温10-12摄氏度。北京是世界历史文化名城和古都之一。早在七十万年前,北京周口店地区就出现了原始人群部落“北京人”。而北京建城也已有两千多年的历史,最初见于记载的名字为“蓟”。公元前1045年北京成为蓟、燕等诸侯国的都城;公元前221年秦始皇统一中国以来, 北京一直是中国北方重镇和地方中心;自公元938年以来,北京又先后成为辽陪都、金上都、元大都、明清国都。1949年10月1日正式定为中华人民共和国首都。北京具有丰富的旅游资源,对外开放的旅游景点达200多处,有世界上最大的皇宫紫禁城、祭天神庙天坛、皇家花 园北海、皇家园林颐和园,还有八达岭、慕田峪、司马台长城以及世界上最大的四合院恭王府等各胜古迹。全市共有文物古迹7309项,其中国家文物保护单位42个,市级文物保护单位222个。北京的市树为国槐和侧柏,市花为月季和菊花。另外,北京出产的象牙雕刻、玉器 雕刻、景泰蓝、地毯等传统手工艺品驰誉世界。",
 }
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Davieyang.D.Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值