http和webservice接口测试有什么区别?

webservice的基础组成是http+xml

三要素:soap传输协议,uddi,wsdl(webservice描述语言xml格式)

优点:跨平台,跨程序

缺点:xml格式,传输和解析耗费资源大

一。wsdl接口怎样使用python测试

官网文档地址:https://fedorahosted.org/suds/wiki/Documentation

1.什么是wsdl接口,本质是xml,框架很多比如cxf

2.python怎样调用wsdl接口,suds模块

入门例子,了解下wsdl和suds的样子

查询ip归属地

  1. >>> import suds
  2. >>> url="http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl"
  3. >>> client=suds.client.Client(url)
  4. >>> print client

打印结果:描述的很清楚,包括seivice,port 和method,直接调用你需要的

  1. Suds ( https://fedorahosted.org/suds/ ) version: 0.4 GA build: R699-20100913
  2.  
  3. Service ( IpAddressSearchWebService ) tns="http://WebXml.com.cn/"
  4. Prefixes (1)
  5. ns0 = "http://WebXml.com.cn/"
  6. Ports (2):
  7. (IpAddressSearchWebServiceSoap)
  8. Methods (3):
  9. getCountryCityByIp(xs:string theIpAddress, )
  10. getGeoIPContext()
  11. getVersionTime()
  12. Types (1):
  13. ArrayOfString
  14. (IpAddressSearchWebServiceSoap12)
  15. Methods (3):
  16. getCountryCityByIp(xs:string theIpAddress, )
  17. getGeoIPContext()
  18. getVersionTime()
  19. Types (1):
  20. ArrayOfString

调用方法:

  1. res=client.service['IpAddressSearchWebServiceSoap12'].getCountryCityByIp('8.8.8.8')
  2. print res

返回结果:

  1. (ArrayOfString){
  2. string[] =
  3. "8.8.8.8",
  4. "美国 加利福尼亚州山景市谷歌公司DNS服务器",
  5. }

2.如果wsdl比较复杂,比如有多个service和port,使用client.service[service][port].getBank(),

如果不指定,默认是第一service的第一个port的第一个method

  1. 下面的就可以写成这样
  1. client.service['OtherBLZService']['soap'].getBank()
  1. client.service[1][0].getBank()
  1. Suds - version: 0.3.7 build: (beta) R550-20090820
  2.  
  3. Service (BLZService) tns="http://thomas-bayer.com/blz/"
  4. Prefixes (1)
  5. ns0 = "http://thomas-bayer.com/blz/"
  6. Ports (2):
  7. (soap)
  8. Methods (1):
  9. getBank(xs:string blz, )
  10. (soap12)
  11. Methods (1):
  12. getBank(xs:string blz, )
  13. Types (5):
  14. getBankType
  15. getBankResponseType
  16. getBankType
  17. getBankResponseType
  18. detailsType
  19.  
  20. Service (OtherBLZService) tns="http://thomas-bayer.com/blz/"
  21. Prefixes (1)
  22. ns0 = "http://thomas-bayer.com/blz/"
  23. Ports (2):
  24. (soap)
  25. Methods (1):
  26. getBank(xs:string blz, )
  27. (soap12)
  28. Methods (1):
  29. getBank(xs:string blz, )
  30. Types (5):
  31. getBankType
  32. getBankResponseType
  33. getBankType
  34. getBankResponseType
  35. detailsType

复杂参数:

  1. Suds - version: 0.3.3 build: (beta) R397-20081121
  2.  
  3. Service (WebServiceTestBeanService) tns="http://test.server.enterprise.rhq.org/"
  4. Prefixes (1):
  5. ns0 = "http://test.server.enterprise.rhq.org/"
  6. Ports (1):
  7. (Soap)
  8. Methods:
  9. addPerson(Person person, )
  10. echo(xs:string arg0, )
  11. getList(xs:string str, xs:int length, )
  12. getPercentBodyFat(xs:string name, xs:int height, xs:int weight)
  13. getPersonByName(Name name, )
  14. hello()
  15. testExceptions()
  16. testListArg(xs:string[] list, )
  17. testVoid()
  18. updatePerson(AnotherPerson person, name name, )
  19. Types (23):
  20. Person
  21. Name
  22. Phone
  23. AnotherPerson

首先看下type里参数是什么样子的

  1. c=suds.client.Client(url)
  2. person=c.factory.create('Person')
    print person
  1. (Person)=
  2. {
  3. phone = []
  4. age = NONE
  5. name(Name) =
  6. {
  7. last = NONE
  8. first = NONE
  9. }
  10. }

赋值有2中方法

1.基本:

  1. phone = client.factory.create('Phone')
  2. phone.npa = 202
  3. phone.nxx = 555
  4. phone.number = 1212
  1. name = client.factory.create('Name')
  2. name.first = 'Elmer'
  3. name.last = 'Fudd'
  1. person.name = name
  2. person.age = 35
  3. person.phone = [phone]
  4.  
  5. json
  6.  
  7. person{}
    phone={'npa':202,'nxx':222,'number':'2222',}
    name={'first':'li','last':'mi'}
  8.  
  9. person['name']=name
    person['age']=22
    person['phone']=[phone,]

使用jmeter测试webservice接口,可查看我后来写的

https://www.cnblogs.com/xueli/p/9681526.html

二。http接口

使用requests

1.无参数get

  1. r = requests.get('http://httpbin.org/get')
  2. print r.text
  3.  
  4. {
  5. "args": {},
  6. "headers": {
  7. "Accept": "*/*",
  8. "Accept-Encoding": "gzip, deflate, compress",
  9. "Host": "httpbin.org",
  10. "User-Agent": "python-requests/2.2.1 CPython/2.7.5 Windows/7"
  11. },
  12. "origin": "223.202.116.5",
  13. "url": "http://httpbin.org/get"
  14. }

有参数get

  1. r = requests.get('http://www.so.com/s',params = {'q':'wwwww'})
  2. print r.text

2.post,参数是字典

  1. payload = {'name':'mmmmmmiiiiii','con':'hello'}
  2. r = requests.post("http://httpbin.org/post", data=payload)
  3. print r.text
  4.  
  5. {
  6. "args": {},
  7. "data": "",
  8. "files": {},
  9. "form": {
  10. "con": "hello",
  11. "name": "mmmmmmiiiiii"
  12. },
  13. "headers": {
  14. "Accept": "*/*",
  15. "Accept-Encoding": "gzip, deflate, compress",
  16. "Content-Length": "",
  17. "Content-Type": "application/x-www-form-urlencoded",
  18. "Host": "httpbin.org",
  19. "User-Agent": "python-requests/2.2.1 CPython/2.7.5 Windows/7"
  20. },
  21. "json": null,
  22. "origin": "223.202.116.5",
  23. "url": "http://httpbin.org/post"
  24. }

post,参数是json

>>> payload = {'name':'tttttlililililili','con':'hello'}

>>> import json

>>> r = requests.post('http://httpbin.org/post', data=json.dumps(payload))

定制headers,使用headers参数来传递

  1. headers = {'content-type': 'application/json'}
  2. r = requests.post(url, data=json.dumps(payload), headers=headers)

webservice接口测试wsdl的更多相关文章

  1. webservice接口测试wsdl,参数是xml格式。python,入参转化成str,返回值转化成dict调用

    1.用SoapUI测试webservice接口,传入参数是xml格式时.xml格式需要将xml的外围增加<![CDATA[xml]]> 2.但是用python去做webservice测试, ...

  2. python接口测试wsdl

    一.wsdl接口怎样使用python测试 官网文档地址:https://fedorahosted.org/suds/wiki/Documentation 1.什么是wsdl接口,本质是xml,框架很多 ...

  3. jmeter压测、操作数据库、分布式linux下运行、webservice接口测试、charles抓包

    一.jmeter压测 在线程组中设置好,然后添加http请求,t添加聚合报告查看压力测试结果,如图: 一般压测时间10-15分钟,如果是稳定性测试,一般n*12小时,这些并发用户一直在请求. tps: ...

  4. 性能测试基础---jmeter webservice接口测试

    ·webservice接口测试实现.·SOA:面向服务的体系架构,主要为了应对大型系统的异构需求.典型的实现方式:webservice·微服务:为了对SOA这样的重服务架构进行解耦而存在的.一个or几 ...

  5. 使用soapui进行webservice接口测试

    一.web service(SOAP)与HTTP接口的区别   1.什么是web service WebService就是Web服务的意思,对应的应用层协议为SOAP(相当于HTTP协议),可理解为远 ...

  6. [Java] webservice soap,wsdl 例子

    java 调用webservice的各种方法总结 现在webservice加xml技术已经逐渐成熟,但要真正要用起来还需时日!! 由于毕业设计缘故,我看了很多关于webservice方面的知识,今天和 ...

  7. Webservice、WSDL三种服务访问的方式【转】

    http://www.cnblogs.com/yongfeng/archive/2013/01/30/2883146.html 用soapUI试了下wsdl的测试,但还是不知道webService和W ...

  8. 浅淡Webservice、WSDL三种服务访问的方式(附案例)

    Webservice Webservice是使应用程序以与平台和编程语言无关的方式进行相互通信技术. eg:站点提供访问的数据接口:新浪微博.淘宝. 官方解释:它是一种构建应用程序的普遍模型,可以在任 ...

  9. Loadrunner 脚本开发-soap_request函数介绍及WebService接口测试

    脚本开发- soap_request函数介绍及WebService接口测试 by:授客 QQ:1033553122 函数介绍 soap_request 函数执行一个SOAP请求 函数原型 int so ...

随机推荐

  1. C# 多线程參数传递

    1.通过实体类来传递(能够传递多个參数与获取返回值),demo例如以下: 须要在线程中调用的函数: namespace ThreadParameterDemo { public class Funct ...

  2. py3下怎么用StringIO

    try: from StringIO import StringIO except ImportError: from io import StringIO

  3. memcache源码编译安装

    问题描述: memcached未授权漏洞.运行账户root,对未授权,官方也没有账户认证,也想不明白,为啥不搞个账户认证memcached..... 问题解决: 未授权,网上大部分通过防火墙实现对未知 ...

  4. Chrome 控制台报错Unchecked runtime.lastError: The message port closed before a response was received

    Chrome浏览器控制台报错提示 Unchecked runtime.lastError: The message port closed before a response was received ...

  5. android4.2 telephone应用层分析

    InCallScreen.java 复制通话界面的显示和提供人机交互的接口.进入该界面第一个调用ONCreate.否则进入OnNewIntent,该配置文件是incall_screen.xml,当中i ...

  6. STM32F105 PA9/OTG_FS_VBUS Issues

    https://www.cnblogs.com/shangdawei/p/3264724.html F105 DFU模式下PA9引脚用来检测USB线缆,若电平在2.7~5v则认为插入usb设备(检测到 ...

  7. Netty学习(八)-Netty的心跳机制

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/a953713428/article/details/69378412我们知道在TCP长连接或者Web ...

  8. 开源Web自动化测试工具Selenium IDE

    Selenium IDE(也有简写SIDE的)是一款开源的Web自动化测试工具,它实现了测试用例的录制与回放. Selenium IDE目前版本为 3.6 系列,支持跨浏览器运行,所以IDE的UI从原 ...

  9. 【转】Eclipse 乱码 解决方案总结(UTF8 -- GBK)

    转载自: http://www.cnblogs.com/bluestorm/archive/2012/09/20/2695567.html UTF8 --> GBK;   GBK --> ...

  10. JSP通过AJAX获取服务端的时间,在页面上自动更新

    1.在页面上引入js <head> <meta http-equiv="Content-Type" content="text/html; charse ...