技术分享 | 软件接口测试工具篇

2018-09-11 10:07:28 +08:00
 dataman

软件接口测试工具篇

关于软件测试更多理论知识我们在另一个篇幅中分享介绍,今天主要和大家分享 Python 语言中 requests 库在接口测试中的使用。

  接口测试工具众多,比如大名鼎鼎的 SoapUI,Apache 旗下性能与接口集一身的 Jmeter、Chrome 浏览器 Postman 插件等等,都可以完成接口类型测试,各有优点,孰轻孰重可以根据项目需求和软件集成接口协议来适配选择。本篇主要给大家推荐的是基于 Python 语言的 requests 库,requests 采用 Apache2 Licensed 开源协议的 HTTP 库,requests 不仅简洁易用,而且维护文档详实,社区版本支持力度活跃,用 Python 做接口测试 requests 是推荐的选择,同时 requests 可以和 python 下的单元测试框架 unittest 集成,完美实现接口测试自动化,测试结束后,通过 HTMLTestRunner 生成测试报告,smtplib 邮件发送结果。

下面以优云数智 PaaS 产品线 Solar 组件的接口自动化测试框架 SRAT 为例分享 requests 的使用:

一、测试环境的准备如下:

      软件
                  版本

操作系统 Windows7 Eclipse Oxygen.1a Release (4.7.1a) Pydev 6.4.0 Python 3.6.3 requests 2.18.4 unittest 2.1 HTMLTestRunner 0.8.2 备注: 1、Python 目前分两个版本 Python2x 和 Python3x,requests 完全支持 Python3x。 2、requests、unittest 安装通过 pip3 install xxx 安装即可。 3、HTMLTestRunner 直接放到 Python 的 Lib 目录下就可以了。

二、SRAT 接口自动化

Public.py 将 Solar 组件的每个大功能封装成为一个类,同时在类下面每一个接口定义为一个方法,然后通过 requests 实现接口协议封装的好的部分,在 Case*.py 测试用例时直接使用该公共类抽象出的对象就可以了,这样做到全局复用。 Case *.py 是将每个大类下面的具体接口编写测试用例,在测试用例里面来实现每一个测试接口所要的测试内容,每一条测试 Case 最后用到 unitest 来断言测试结果和预期结果,作为在测试报告中标注测试是否通过。 Report.py 是执行自动化测试的入口,里面 HTMLTestRunner 定义了测试报告生成、smtplib 邮件发送两大块内容。 report 文件夹用来存放每次执行接口自动化测试生成的报告。 config.ini 配置文件可以用来配置邮件的相关信息,例如发送接收人,邮件服务器信息等。

三、SRAT 接口自动化测试公共类 Public.py 实现(以 User API 为例):

   User 业务功能中总共包括 8 个接口,分别实现不同的和用户相关功能,将 User 封装为类 Class UserAPI,然后在 UserAPI Class 中分别对每一个接口功能定义一个方法实例,准备给对应的接口测试用例来调用,这样比较逻辑清晰,易于修改和复用,下面是实现代码。 

四、SRAT 接口自动化测试用例类 Case*.py 实现(以 CaseUser 为例):

   在 User API 里面定义好公共类后,在 CaseUser 就需要使用公共类定义好的方法了,CaseUser 里面继承了 Python 单元测试框架 unittest 的方法(关于 unittest 实现原理类似于 java 里面的 junit,大家可以自行查找资料,比较好理解),测试结果和预期结果通过断言 assert 来比较,SRAT 主要是判断接口请求后 response 返回的状态码和返回状态信息来断言。然后将所有的测试用例组织到测试套件 unittest.TestSuite ()自动化完成测试用例的执行,执行完所有的测试用例后用 HTMLTestRunner.HTMLTestRunner ()生成测试报告,代码如下。

五、SRAT 接口自动化 Report 测试执行及报告发送:

   测试公共类 Public 和测试用例 Case* 编写完成后,就可以进入测试执行环节,分两部分:一部分是测试执行环节,unittest.defaultTestLoader.discover ()用来执行测试用例部分,自动调用 Case*.py ,Case*.py 继续再调用 Public 对应实现方法,测试用例执行完毕后,调用 send_mail()方法发送测试测试报告,整个接口测试过程就完毕了,实现代码如下。

测试执行完毕后在 Eclipse 控制台显示的测试。

六、SRAT 接口自动化邮件报告查看:

  下面是 SRAT 接口自动化测试完成 HTMLTestRunner 生成报告后发送给相关人员,打开可以查看本次接口测试执行情况,包括测试用例的通过率、通过、错误、失败、所有,对每一个用例集下的测试用例有详细的统计,失败或错误了的原因,如下测试报告展示。



 总结上面 SRAT 实现接口自动化测试分享了 Python requests 使用,从测试角度讲,关键部分是测试框架搭建和测试用例的编写,本次 SRAT 是首先将接口公共部分封装类后,然后再在测试用例调用实现公共的方法去测试对应接口,其实,这个测试还需要有一定的 Python 代码基础,如果从黑盒子角度可以将测试框架和测试用例完全解耦分离,测试用例用 excel 或 YAML 文件来实现测试用例就更好了,期待后面改进一版。

上面有不妥之前敬请和我联系,一起交流沟通,谢谢!后面有机会和大家一起分享测试基础理论、测试工具集合、存储测试入门、大数据性能测试等内容。

requests 官方参考文档: http://docs.python-requests.org/zh_CN/latest/user/quickstart.html http://www.python-requests.org/en/master/ https://pypi.org/project/requests/

优云数智介绍

优云数智(上海优铭云计算有限公司)是一家专注于提供企业级私有云产品与解决方案的云计算厂商,提供 PaaS+IaaS 的一站式解决方案。优云数智的母公司是中国中立的公有云服务商 UCloud。私有云技术来源于全球顶尖的 OpenStack、Ceph、Kubernetes 云计算开发团队。

2748 次点击
所在节点    C
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/488075

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX