webservice接口测试wsdl
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归属地
- >>> import suds
- >>> url="http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl"
- >>> client=suds.client.Client(url)
- >>> print client
打印结果:描述的很清楚,包括seivice,port 和method,直接调用你需要的
- Suds ( https://fedorahosted.org/suds/ ) version: 0.4 GA build: R699-20100913
- Service ( IpAddressSearchWebService ) tns="http://WebXml.com.cn/"
- Prefixes (1)
- ns0 = "http://WebXml.com.cn/"
- Ports (2):
- (IpAddressSearchWebServiceSoap)
- Methods (3):
- getCountryCityByIp(xs:string theIpAddress, )
- getGeoIPContext()
- getVersionTime()
- Types (1):
- ArrayOfString
- (IpAddressSearchWebServiceSoap12)
- Methods (3):
- getCountryCityByIp(xs:string theIpAddress, )
- getGeoIPContext()
- getVersionTime()
- Types (1):
- ArrayOfString
调用方法:
- res=client.service['IpAddressSearchWebServiceSoap12'].getCountryCityByIp('8.8.8.8')
- print res
返回结果:
- (ArrayOfString){
- string[] =
- "8.8.8.8",
- "美国 加利福尼亚州山景市谷歌公司DNS服务器",
- }
2.如果wsdl比较复杂,比如有多个service和port,使用client.service[service][port].getBank(),
如果不指定,默认是第一service的第一个port的第一个method
- 下面的就可以写成这样
- client.service['OtherBLZService']['soap'].getBank()
- client.service[1][0].getBank()
- Suds - version: 0.3.7 build: (beta) R550-20090820
- Service (BLZService) tns="http://thomas-bayer.com/blz/"
- Prefixes (1)
- ns0 = "http://thomas-bayer.com/blz/"
- Ports (2):
- (soap)
- Methods (1):
- getBank(xs:string blz, )
- (soap12)
- Methods (1):
- getBank(xs:string blz, )
- Types (5):
- getBankType
- getBankResponseType
- getBankType
- getBankResponseType
- detailsType
- Service (OtherBLZService) tns="http://thomas-bayer.com/blz/"
- Prefixes (1)
- ns0 = "http://thomas-bayer.com/blz/"
- Ports (2):
- (soap)
- Methods (1):
- getBank(xs:string blz, )
- (soap12)
- Methods (1):
- getBank(xs:string blz, )
- Types (5):
- getBankType
- getBankResponseType
- getBankType
- getBankResponseType
- detailsType
复杂参数:
- Suds - version: 0.3.3 build: (beta) R397-20081121
- Service (WebServiceTestBeanService) tns="http://test.server.enterprise.rhq.org/"
- Prefixes (1):
- ns0 = "http://test.server.enterprise.rhq.org/"
- Ports (1):
- (Soap)
- Methods:
- addPerson(Person person, )
- echo(xs:string arg0, )
- getList(xs:string str, xs:int length, )
- getPercentBodyFat(xs:string name, xs:int height, xs:int weight)
- getPersonByName(Name name, )
- hello()
- testExceptions()
- testListArg(xs:string[] list, )
- testVoid()
- updatePerson(AnotherPerson person, name name, )
- Types (23):
- Person
- Name
- Phone
- AnotherPerson
首先看下type里参数是什么样子的
- c=suds.client.Client(url)
- person=c.factory.create('Person')
print person
- (Person)=
- {
- phone = []
- age = NONE
- name(Name) =
- {
- last = NONE
- first = NONE
- }
- }
赋值有2中方法
1.基本:
- phone = client.factory.create('Phone')
- phone.npa = 202
- phone.nxx = 555
- phone.number = 1212
- name = client.factory.create('Name')
- name.first = 'Elmer'
- name.last = 'Fudd'
- person.name = name
- person.age = 35
- person.phone = [phone]
- json
- person{}
phone={'npa':202,'nxx':222,'number':'2222',}
name={'first':'li','last':'mi'}- person['name']=name
person['age']=22
person['phone']=[phone,]
使用jmeter测试webservice接口,可查看我后来写的
https://www.cnblogs.com/xueli/p/9681526.html
二。http接口
使用requests
1.无参数get
- r = requests.get('http://httpbin.org/get')
- print r.text
- {
- "args": {},
- "headers": {
- "Accept": "*/*",
- "Accept-Encoding": "gzip, deflate, compress",
- "Host": "httpbin.org",
- "User-Agent": "python-requests/2.2.1 CPython/2.7.5 Windows/7"
- },
- "origin": "223.202.116.5",
- "url": "http://httpbin.org/get"
- }
有参数get
- r = requests.get('http://www.so.com/s',params = {'q':'wwwww'})
- print r.text
2.post,参数是字典
- payload = {'name':'mmmmmmiiiiii','con':'hello'}
- r = requests.post("http://httpbin.org/post", data=payload)
- print r.text
- {
- "args": {},
- "data": "",
- "files": {},
- "form": {
- "con": "hello",
- "name": "mmmmmmiiiiii"
- },
- "headers": {
- "Accept": "*/*",
- "Accept-Encoding": "gzip, deflate, compress",
- "Content-Length": "",
- "Content-Type": "application/x-www-form-urlencoded",
- "Host": "httpbin.org",
- "User-Agent": "python-requests/2.2.1 CPython/2.7.5 Windows/7"
- },
- "json": null,
- "origin": "223.202.116.5",
- "url": "http://httpbin.org/post"
- }
post,参数是json
>>> payload = {'name':'tttttlililililili','con':'hello'}
>>> import json
>>> r = requests.post('http://httpbin.org/post', data=json.dumps(payload))
定制headers,使用headers参数来传递
- headers = {'content-type': 'application/json'}
- r = requests.post(url, data=json.dumps(payload), headers=headers)
webservice接口测试wsdl的更多相关文章
- webservice接口测试wsdl,参数是xml格式。python,入参转化成str,返回值转化成dict调用
1.用SoapUI测试webservice接口,传入参数是xml格式时.xml格式需要将xml的外围增加<![CDATA[xml]]> 2.但是用python去做webservice测试, ...
- python接口测试wsdl
一.wsdl接口怎样使用python测试 官网文档地址:https://fedorahosted.org/suds/wiki/Documentation 1.什么是wsdl接口,本质是xml,框架很多 ...
- jmeter压测、操作数据库、分布式linux下运行、webservice接口测试、charles抓包
一.jmeter压测 在线程组中设置好,然后添加http请求,t添加聚合报告查看压力测试结果,如图: 一般压测时间10-15分钟,如果是稳定性测试,一般n*12小时,这些并发用户一直在请求. tps: ...
- 性能测试基础---jmeter webservice接口测试
·webservice接口测试实现.·SOA:面向服务的体系架构,主要为了应对大型系统的异构需求.典型的实现方式:webservice·微服务:为了对SOA这样的重服务架构进行解耦而存在的.一个or几 ...
- 使用soapui进行webservice接口测试
一.web service(SOAP)与HTTP接口的区别 1.什么是web service WebService就是Web服务的意思,对应的应用层协议为SOAP(相当于HTTP协议),可理解为远 ...
- [Java] webservice soap,wsdl 例子
java 调用webservice的各种方法总结 现在webservice加xml技术已经逐渐成熟,但要真正要用起来还需时日!! 由于毕业设计缘故,我看了很多关于webservice方面的知识,今天和 ...
- Webservice、WSDL三种服务访问的方式【转】
http://www.cnblogs.com/yongfeng/archive/2013/01/30/2883146.html 用soapUI试了下wsdl的测试,但还是不知道webService和W ...
- 浅淡Webservice、WSDL三种服务访问的方式(附案例)
Webservice Webservice是使应用程序以与平台和编程语言无关的方式进行相互通信技术. eg:站点提供访问的数据接口:新浪微博.淘宝. 官方解释:它是一种构建应用程序的普遍模型,可以在任 ...
- Loadrunner 脚本开发-soap_request函数介绍及WebService接口测试
脚本开发- soap_request函数介绍及WebService接口测试 by:授客 QQ:1033553122 函数介绍 soap_request 函数执行一个SOAP请求 函数原型 int so ...
随机推荐
- C# 多线程參数传递
1.通过实体类来传递(能够传递多个參数与获取返回值),demo例如以下: 须要在线程中调用的函数: namespace ThreadParameterDemo { public class Funct ...
- py3下怎么用StringIO
try: from StringIO import StringIO except ImportError: from io import StringIO
- memcache源码编译安装
问题描述: memcached未授权漏洞.运行账户root,对未授权,官方也没有账户认证,也想不明白,为啥不搞个账户认证memcached..... 问题解决: 未授权,网上大部分通过防火墙实现对未知 ...
- 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 ...
- android4.2 telephone应用层分析
InCallScreen.java 复制通话界面的显示和提供人机交互的接口.进入该界面第一个调用ONCreate.否则进入OnNewIntent,该配置文件是incall_screen.xml,当中i ...
- STM32F105 PA9/OTG_FS_VBUS Issues
https://www.cnblogs.com/shangdawei/p/3264724.html F105 DFU模式下PA9引脚用来检测USB线缆,若电平在2.7~5v则认为插入usb设备(检测到 ...
- Netty学习(八)-Netty的心跳机制
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/a953713428/article/details/69378412我们知道在TCP长连接或者Web ...
- 开源Web自动化测试工具Selenium IDE
Selenium IDE(也有简写SIDE的)是一款开源的Web自动化测试工具,它实现了测试用例的录制与回放. Selenium IDE目前版本为 3.6 系列,支持跨浏览器运行,所以IDE的UI从原 ...
- 【转】Eclipse 乱码 解决方案总结(UTF8 -- GBK)
转载自: http://www.cnblogs.com/bluestorm/archive/2012/09/20/2695567.html UTF8 --> GBK; GBK --> ...
- JSP通过AJAX获取服务端的时间,在页面上自动更新
1.在页面上引入js <head> <meta http-equiv="Content-Type" content="text/html; charse ...