python接口自动化41-suds测试webservice接口

前言

webservice 的接口,前面已经掌握了在 postman 上做接口测试,接下来使用 python 代码测试 webservice 接口

环境准备

先使用 pip 安装suds 库: pip install suds-jurko

>pip install suds-jurko
Collecting suds-jurko
Downloading suds-jurko-0.6.zip (255 kB)
|████████████████████████████████| 255 kB 6.2 kB/s
Using legacy 'setup.py install' for suds-jurko, since package 'wheel' is not installed.
Installing collected packages: suds-jurko
Running setup.py install for suds-jurko ... done
Successfully installed suds-jurko-0.6

Client建立连接

创建websercive对象,返回全部方法,url是访问的webservice地址后面带上?wsdl

from suds import client

# webservice地址
url = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl"

# 创建webservice对象
cli = client.Client(url)
print(cli) # 查看全部方法

结果返回

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

返回了2个方法getDatabaseInfo() 和 getMobileCodeInfo(xs:string mobileCode, xs:string userID)
通过浏览器访问也可以看到对应的方法和请求参数http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx

调用service接口

先测试第一个接口:getDatabaseInfo
获得国内手机号码归属地数据库信息
输入参数:无;返回数据:一维字符串数组(省份 城市 记录数量)。

调用service接口的格式:cli.service.方法名称(参数)

from suds import client
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

# webservice地址
url = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl"

# 创建webservice对象
cli = client.Client(url)
# print(cli) # 查看全部方法

tels = cli.service.getDatabaseInfo()
print(tels)

于是可以返回结果

(ArrayOfString){
string[] =
"全部 数据 265903",
"安徽 安庆 658",
"安徽 蚌埠 456",
"安徽 亳州 489",
"安徽 巢湖 323",
"安徽 池州 281",
"安徽 滁州 555",
"安徽 阜阳 885",
"安徽 合肥 1253",
"安徽 淮北 310",
"安徽 淮南 380",
"安徽 黄山 256",
......
}

getMobileCodeInfo

获得国内手机号码归属地省份、地区和手机卡类型信息
输入参数:mobileCode = 字符串(手机号码,最少前7位数字),userID = 字符串(商业用户ID) 免费用户为空字符串;
返回数据:字符串(手机号码:省份 城市 手机卡类型)。

测试
若要使用 HTTP POST 协议对操作进行测试,请单击“调用”按钮。

以下是 SOAP 1.2 请求和响应示例。所显示的占位符需替换为实际值。

POST /WebServices/MobileCodeWS.asmx HTTP/1.1
Host: ws.webxml.com.cn
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://WebXml.com.cn/getMobileCodeInfo"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getMobileCodeInfo xmlns="http://WebXml.com.cn/">
<mobileCode>string</mobileCode>
<userID>string</userID>
</getMobileCodeInfo>
</soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getMobileCodeInfoResponse xmlns="http://WebXml.com.cn/">
<getMobileCodeInfoResult>string</getMobileCodeInfoResult>
</getMobileCodeInfoResponse>
</soap:Body>
</soap:Envelope>

很明显这里有2个参数需要传,按上面文档的提示传对应的参数名称和值就行了

from suds import client
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

# webservice地址
url = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl"

# 创建webservice对象
cli = client.Client(url)
print(cli) # 查看全部方法

# 输入参数:mobileCode = 字符串(手机号码,最少前7位数字),
# userID = 字符串(商业用户ID) 免费用户为空字符串
result = cli.service.getMobileCodeInfo(mobileCode="152215501xx",
userID="")
print(result)

结果返回:

152215501xx:上海 上海 上海移动全球通卡

使用 python 的 suds 库测试 webservice 其实更简单了,不用看那些繁琐的xml格式的数据了,根据接口文档传对应的参数即可。

2021年第六期《python接口自动化+测试开发》课程,1月9号开学(火热报名中!)

本期上课时间:1月9号-4月18号,每周六、周日晚上20:30-22:30

(0)

相关推荐

  • Delphi 调用webservice接口的三类方法

    一.使用向导 1.导入wsdl文件:file--new----other----webservice---WSDLimporter---输入wsdl地址 http://www.webxml.com.c ...

  • python接口自动化21-规范的API接口文档示例

    前言 接口文档到底长啥样?做接口测试最大的障碍在于没有接口文档,很多公司不注重接口文档的编写,导致测试小伙伴没见过接口文档. 运气好一点的测试小伙伴可能厚着脸皮找开发要过接口文档,然而拿过来的接口文档 ...

  • jmeter压测学习47-发soap请求测试webservice接口

    前言 jmeter3 的版本可以新建一个SOAP/XML-RPC Request 的请求,直接测试webservice的接口. jmeter5.1.1 版本已经去掉了自带的SOAP/XML-RPC R ...

  • python接口自动化1-发送get请求

    前言 requests模块,也就是老污龟,为啥叫它老污龟呢,因为这个官网上的logo就是这只污龟,接下来后面的自动化都离不开它. 一.环境安装 1.用pip安装requests模块 >>p ...

  • python接口自动化2-发送post请求

    前言 发送post的请求参考例子很简单,实际遇到的情况却是很复杂的,首先第一个post请求肯定是登录了,但登录是最难处理的.登录问题解决了,后面都简单了. 一.查看官方文档 1.学习一个新的模块,其实 ...

  • python接口自动化3-自动发帖(session)

    前言 上一篇模拟登录博客园,但这只是第一步,一般登录后,还会有其它的操作,如发帖,评论等,这时候如何保持会话呢? 一.session简介 1.查看帮助文档,贴了一部分,后面省略了 >>im ...

  • python接口自动化4-绕过验证码登录(cookie)

    前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接). 获取不到也没关系,可以通过添加cookie的方式绕过验证码. 一.抓登录coo ...

  • python接口自动化5-Json数据处理

    前言 有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理. 一般常见的接口返回数据也是json格式的,我们在做判断时候,往往只需要提取其中几个关键的 ...

  • python接口自动化6-重定向(Location)

    前言 某屌丝男A鼓起勇气向女神B打电话表白,女神B是个心机婊觉得屌丝男A是好人,不想直接拒绝于是设置呼叫转移给闺蜜C了,最终屌丝男A和女神闺蜜C表白成功了,这种场景其实就是重定向了. 一.重定向 1. ...

  • python接口自动化7-参数关联

    前言 我们用自动化发帖之后,要想接着对这篇帖子操作,那就需要用参数关联了,发帖之后会有一个帖子的id,获取到这个id,继续操作传这个帖子id就可以了 一.删除草稿箱 1.我们前面讲过登录后保存草稿箱, ...