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)

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

  1. Python接口测试实战5(下) - RESTful、Web Service及Mock Server

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  2. Python接口测试实战1(上)- 接口测试理论

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  3. Python接口测试实战4(下) - 框架完善:用例基类,用例标签,重新运行上次失败用例

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  4. Python接口测试实战5(上) - Git及Jenkins持续集成

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  5. Python接口测试实战4(上) - 接口测试框架实战

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  6. Python接口测试实战3(下)- unittest测试框架

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  7. Python接口测试实战3(上)- Python操作数据库

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  8. Python接口测试实战2 - 使用Python发送请求

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  9. Python接口测试实战1(下)- 接口测试工具的使用

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

随机推荐

  1. 笔记:linux下mysql设置utf-8编码方法

    一:查看mysql版本 1.1 mysql –V 在终端界面输入上面命令.显示如下: mysql Ver 14.14 Distrib 5.5.35, fordebian-linux-gnu (x86_ ...

  2. json处理总结(前端js和后端java)

    前端(js): json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键,下面将介绍两者之间的相互转换. json字符串:var st ...

  3. oracle 数据库信息查询

    /*查询当前用户表信息/ select A.column_name    字段名, A.data_type      数据类型, A.data_length    长度, A.data_precisi ...

  4. php常见的关键字

    一 instanceof 检测一个对象是否属于某个类型 <?php class A { } $a = new A(); if($a instanceof A) { echo "yes& ...

  5. [收藏]谷歌htm/css规范

    通用样式规范 协议 省略图片.样式.脚本以及其他媒体文件 URL 的协议部分(http:,https:),除非文件在两种协议下都不可用.这种方案称为 protocol-relative URL,好处是 ...

  6. json字符串返回到js中乱码

    Ajax 的post请求值返回到js中时出现中文乱码的情况,但是在action中写入时并未乱码,解决办法在action中写入前,加上这两行: request.setCharacterEncoding( ...

  7. web.config设置和取值

    博客园中有一篇文章对web.config的结构做了很详细的介绍,原文见 http://www.cnblogs.com/gaoweipeng/archive/2009/05/17/1458762.htm ...

  8. iOS开发:正则表达式

    语法/字符说明表 值表达 .      匹配除换行符外的任意字符 \w   匹配字母或者数字的字符 \W   匹配任意不是字母或数字的字符 \s    匹配任意的空白符(空格.制表符.换行符) \S ...

  9. System.Web.Script.Serialization引用找不到的问题

    之前在项目中要使用JavascriptSerializer这个类,需要引入System.Web.Script.Serialization命名空间,但是在添加引用中找不到这个命名空间,后来才得知Syst ...

  10. Hadoop的数据输入的源码解析

    我们知道,任何一个工程项目,最重要的是三个部分:输入,中间处理,输出.今天我们来深入的了解一下我们熟知的Hadoop系统中,输入是如何输入的? 在hadoop中,输入数据都是通过对应的InputFor ...