python在webservice接口测试中的应用

接口测试第二波,webservice接口来咯,欢迎各位小伙伴吐槽~

本次拿免费的互联网国内手机号码归属地查询WEB服务webservice接口做例子,当然有很多免费webservice接口可以供大家使用,百度一下就有N多,手机号码归属地查询wsdl地址如下:http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl

打开后可以看到有一个getMobileCodeInfo方法,入参是一个电话号码,当然也可以通过python调用来看到,接下来会介绍。使用python的suds模块,这是一个第三方模块,需要安装,如果安装了setuptools或pip,可以直接用easy_install 或pip命令安装,easy_install suds或pip install suds即可,如果没有安装,可以去官网上下载,http://pypi.python.org/pypi/suds,下载后进入suds目录python setup.py install 即可。

由于每个接口方法都是不一样的,入参也不一样,所以没有办法像http rest接口一样写成一个通用类,只能在测试的时候修改接口的方法名和入参了。

首先我们来看一下这个wsdl下都有哪些方法:

suds.client Client#导入suds.client 模块下的Client类
client = Client()#创建一个wsdl对象
print client#打印这个对象的详细信息

打印出来的结果如下:

Suds ( https://fedorahosted.org/suds/ )  version: 0.4 GA  build: R699-20100913

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

=================================================

从上面的结果可以看到有两个方法一个是getDatabaseInfo()没有入参,一个是getMobileCodeInfo(),入参是一个字符串,手机号和用户id,免费用户的用户id可以不填,下面就是用来测试的代码了,注释也很详细:

from suds.client import Client #导入suds.client 模块下的Client类Mobile_url="http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl"#手机号码归属地QQ_url="http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl"#qq在线状态Random_url=‘http://webservice.webxml.com.cn/WebServices/RandomFontsWebService.asmx?wsdl‘#生成随机字符串def WsTest(url,Wsname,data):    ‘‘‘    :param url: wsdl地址    :param Wsname: 方法名,做保存结果的文件名    :param data: 方法的传入参数    :return:    ‘‘‘    client = Client(url)#创建一个webservice接口对象    client.service.getMobileCodeInfo(data)#调用这个接口下的getMobileCodeInfo方法,并传入参数    req = str(client.last_sent())#保存请求报文,因为返回的是一个实例,所以要转换成str    response = str(client.last_received())#保存返回报文,返回的也是一个实例    print response#打印返回报文    WriteRes(Wsname,req,response,data)#调用写入结果函数,把方法名、请求报文、返回报文、和入参传进去def WriteRes(WsName,req,response,data):    ‘‘‘    :param WsName: 接口的方法名    :param req: 请求报文    :param response: 返回报文    :param data: 传入的数据    ‘‘‘    res = response.find(data)#从返回结果里面找data,如果找到的话返回data的下标,也就是索引,找不到的话返回-1    fw_flag = open(‘/tmp/WsTestRes/WsTestRes.txt‘,‘a‘)#以追加模式打开写入结果文件    if res>0:        fw_flag.write(‘%s  pass‘%WsName)#如果在返回报文中找到data的话,就写pass,否则就写fail    else:        fw_flag.write(‘%s  fail‘%WsName)    fw_flag.close()#关闭结果文件    fw_result = open(‘/tmp/WsTestRes/%s_result.txt‘%WsName,‘w‘)#打开以接口方法命名的文件    fw_result.write(req+‘\n‘*3+response)#保存请求报文和返回报文,\n*3的意思是换行三次    fw_result.close()#关闭结果文件if __name__ ==‘__main__‘:    WsTest(Mobile_url,‘getMobileCodeInfo‘,‘110‘)

如果传入的是一个合法的手机号,执行后会看到类似下面的返回结果,所有判断成功或者失败就可以用手机号来判断,所以上面写的如果在返回报文中找到手机号的话,就说明调用成功了,可以把该方法pass。

<?xml version="1.0" encoding="UTF-8"?>

<soap:Envelope>

<soap:Body>

<getMobileCodeInfoResponse xmlns="http://WebXml.com.cn/">

<getMobileCodeInfoResult>18612538722:北京 北京 北京联通GSM卡</getMobileCodeInfoResult>

</getMobileCodeInfoResponse>

</soap:Body>

</soap:Envelope>

=================================================

下面是输入非法的手机号返回的结果,说明根据返回报文中有没有手机号来判断是否通过是靠谱的。

<?xml version="1.0" encoding="UTF-8"?>

<soap:Envelope>

<soap:Body>

<getMobileCodeInfoResponse xmlns="http://WebXml.com.cn/">

<getMobileCodeInfoResult>手机号码错误 http://www.webxml.com.cn</getMobileCodeInfoResult>

</getMobileCodeInfoResponse>

</soap:Body>

</soap:Envelope>

=================================================

over,当然如果导入threading(多线程)模块就能做一个简单的压力测试了,下次会更新哦

时间: 2024-08-10 17:09:04

python在webservice接口测试中的应用的相关文章

python nose测试框架全面介绍八---接口测试中非法参数的断言

在测接口时,会有这样的场景,输入非法的参数,校验返回的错误码及错误内容 通常做法为发请求,将错误的返回结果拿出,再进行对比匹配:但存在一个问题,需要再写错误返回分析函数,不能与之前正常发请求的函数共用. 这时,我们可以用上assertRaises.assertRaisesRegexp:python 2.7中unittest中叫assertRaises,nose.tools中叫assert_raises.assert_raises_regexp 一.unittest中的assertRaises 看

《用Python做HTTP接口测试》学习感悟

机缘巧合之下,报名参加了阿奎老师发布在"好班长"的课程<用Python做HTTP接口测试>,报名费:15rmb,不到一杯咖啡钱,目前为止的状态:坚定不移的跟下去,自学+课程模式每天一小时! 1.学习初衷 打算学习Python,这个想法开始于2017年,和在网络上遇到的绝大多数测试人员不同,我的工作单位是一个大型国企,虽然从事软件测试工作已经有四年,可事实上,无论是测试理论还是实际项目经验,都处于一种停滞不前的状态,作为一个有理想的测试猿(害羞脸),这样的工作状态让人心酸,因

Python 开发与接口测试学习笔记

这是我跟着虫师学习中积累下来的学习笔记,写得比较简单,适合想学习Python开发与接口测试的初学者学习. 一.开发投票系统 1.参考官网文档,创建投票系统. https://docs.djangoproject.com/en/1.11/intro/tutorial01/ 在创建投票系统之前,要确认自己安装的Django和官网的文档是一致的. ==================== win 10 Python 3.6.2 Django 1.11.3 Pycharm编译器 ============

Python调用Webservice、访问网页

昨天在调试Webservice的时候,由于不想写测试程序,就想用Python访问Webservice,结果还是相当的麻烦.远没有VSIDE用的方便 不得不说VS还是很强大的,人性化做的很好,不需要你看文档,统一的规范,统一的代码.我想还是VS走的更远吧,希望VS越来越强大. 用Python调试Webservice必须的安装第三方模块,这里推荐suds吧,随之问题来了,要用suds必须的有安装工具啊,so要学会安装,这里用的是 pip安装. pip安装包自行百度,然后进去CMD命令,Python

Python开发WebService:REST,web.py,eurasia,Django

Python开发WebService:REST,web.py,eurasia,Django 博客分类: Python PythonRESTWebWebServiceDjango 对于今天的WebService开发,我们至少有两种选择:SOAP/WSDL/UDDI系列的: REST风格架构系列的 !!! 在Bioinformatics(生物信息学)领域,WebService是很重要的一种数据交换技术,未来必将更加重要.目前EBI所提供的WebService就分别有SOAP和REST两种方式的服务,

用Python写WebService接口并且调用

一.用ladon框架封装Python为Webservice接口 另用soaplib实现请看:    http://www.jianshu.com/p/ad3c27d2a946 功能实现的同时,希望将接口开放给别人,而封装python接口的一个再简单不过的框架Ladon,而且提供不同的协议,包括SOAP和Json等格式的接口.本篇紧接着上上篇(Django部署)的.虽然很简单,但是官网的文档还是不够详细,下面介绍我配置的过程及遇到的问题. 1.安装Ladon包 使用Ladon框架,首先需要安装La

使用python开发WebService

使用python开发WebService 分类: web linux2009-03-30 11:36 6621人阅读 评论(1) 收藏 举报 webservicepythonsoapimporteclipseweb 一个基本的 python web service 开发环境由以下这些工具组成:Python2.4,Eclipse WTP,PyDev plug-in,Python ZSI包ZSI 还依赖与一些其它的 python 开源包:SOAPy,pyXML建议在*nix环境下使用,原因是pyXM

HTTP和webservice接口测试

接口请求报文拼接 url?param=value&param1=value             url+?+参数=值 入参是json串,不能拼接参数,需要使用工具,如:postman get post 如果是get请求,直接在浏览器里输入,即可请求到 如果是post请求,需要借助工具来发送 get和post区别 1.get使用url或者cookie传参数,而post放在body里面(其实post请求也可以放在url中的) 2.get的url长度有限制,而post可以非常大:(现在的浏览器已经

Python的Web编程[2] -&gt; WebService技术[0] -&gt; 利用 Python 调用 WebService 接口

WebService技术 / WebService Technology 1 关于webservice / Constants WebService是一种跨编程语言和跨操作系统平台的远程调用技术. WebService主要由以下三种技术构成,XML+XSD,SOAP和WSDL XML+XSD: WebService采用HTTP协议传输数据,采用XML格式封装数据(即XML中说明调用远程服务对象的哪个方法,传递的参数是什么,以及服务对象的返回结果是什么).XML是WebService平台中表示数据