接口测试第二波,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下都有哪些方法:from suds.client import 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可以不填,下面就是用来测试的代码了,注释也很详细:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

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')

转载于:https://www.cnblogs.com/sriba/p/8043685.html

python在webservice接口测试中的应用相关推荐

  1. Python在HTTP接口测试中的应用

    HTTP接口例子:http:\\ip:port\interface.php?uname=aaa 接口功能: 根据uname参数值来返回对应的用户名的基本信息 1. 用Python封装被测试接口,对于H ...

  2. Python脚本做接口测试,抛弃接口测试工具是否可行?(二)

    学习是为了更好的应用,之前做接口测试一直用的postman.fiddler,感觉用工具还是有些局限性,于是想着把学到的python灵活运用到接口测试中,于是就有了以下案例,思考着想用unittest做 ...

  3. python通信测试_Python接口测试实战1(上)- 接口测试理论

    本节内容 接口及接口测试 网络基础知识:IP,域名, DNS及端口 网络基础知识:OSI七层模型及TCP协议 HTTP协议 接口及接口测试 接口的概念 接口又称API(Application Prog ...

  4. Python 调试Webservice接口

    最近Python特别火,CSDN上广告满天飞,不说其他,不管有没有编程基础,上手都特别快,写Python不需要考虑语言本身的东西,只需要考虑业务逻辑就好. Python环境搭建: https://ww ...

  5. python grpc 并发_用Python进行gRPC接口测试(二)

    今天将继续为大家带来用Python进行gRPC接口测试的续集,上次主要讲了一下前期准备工作和简单RPC通信方式的实现,这次我们将着眼于另一类gRPC接口的通信形式--流式RPC. 一.流式RPC的三种 ...

  6. 软件测试的特殊字符包含什么,测试常见的特殊字符集及接口测试中的测试字符...

    一般测试中特殊字符通常分为三类 1.一类是软件本身的一些字段不能是某些字符. 比如,用户名不能是中文和一些特殊符号,mail的地址就是一个很典型的例子,登陆的时候用户名只能是字母.数字.下划线等,这个 ...

  7. 接口测试用python怎么做_请问一下python怎么做接口测试工具?

    茅侃侃 之前使用过urllib和urllib2做接口测试,在做的途中,感觉使用urllib2直接进行的get,post 请求并没有那么好用.作为测试人员,所需要的测试工具应当以方便为第一要务,测试的耗 ...

  8. python调用webservice接口实例_python调用各种接口,webservice,c接口,com接口,socket协议方法...

    python调用webservice接口(SOAP) (2)调用示例: 需要先安装suds库:pip install suds from suds.client import Client #如果需要 ...

  9. python接口自动化--接口测试工具介绍(详解)

    目录 简介 接口测试工具 1.Fiddler 2.PostMan 4.Java代码做接口测试 5.Python代码做接口测试 6.LoadRunner 7.JMeter 总结 简介 "工欲善 ...

最新文章

  1. python3.6安装-python3.6的安装及注意事项
  2. python单词大全-python常用的单词
  3. 页面从输入 URL 到页面加载显示完成
  4. Leet Code OJ 58. Length of Last Word [Difficulty: Easy]
  5. Jzoj4778 数列编辑器
  6. Java(enum)枚举用法详解
  7. seqkit根据基因id_Microwell-Seq
  8. centos 安装jenkins
  9. 3D线激光成像数学模型简析与实现
  10. IDEA开发项目必备的几个查找功能的使用、查找整个项目文件内容(Find in Path)、查找某个文件名
  11. Android腾讯云通信集成记录(快速实现聊天功能)
  12. 基于权重的地图匹配技术
  13. html match函数,match函数 Match函数概述
  14. 微服务不是架构演变的终点!
  15. canvas实现英雄联盟战力图
  16. 洒一瓣秋香,种一片月光
  17. Spark SQL 笔记(16)—— Spark on YARN
  18. liunx系统中的盘符能修改嘛_WIN10修改盘符怎么更改
  19. 小米真机测试data文件夹看不见问题解决+小米手机线刷
  20. 多边形内角和c语言编程,多边形的内角和与外角和同步练习题

热门文章

  1. 【转】Android虚拟平台的编译和整合
  2. 浅谈接口对前后端测试的意义
  3. [Linux]文件的atime ctime mtime
  4. redis 公网 安全_最安全redis公网访问
  5. linux中关于ssh实验,操作系统实验三linux的telnetftpssh的相关配置及验证
  6. php框架中数据库模型层原理,简单模拟ThinkPHP框架模型层对数据库的链式操作-Go语言中文社区...
  7. 普通地图的六大要素_地图的基本要素是什么 主要是哪三大要素
  8. java继承的作用_Java继承概述以及Java继承案例和继承的好处
  9. 欲练JS,必先攻CSS——前端修行之路
  10. 7-3 sdut-求两个整数之和(I)