基于Python的接口自动化测试框架

项目背景

  • 公司内部的软件采用B/S架构,目的是进行实验室的数据存储、分析、管理。
  • 大部分是数据的增删改查,可是因为还在开发阶段,因此UI的变化很是快,难以针对UI进行自动化测试,那样会消耗大量的精力与时间维护自动化脚本,对于小团队来讲就得不偿失了。

  针对此种状况,选用接口测试较为有效。python

工具选择

  针对接口测试的自动化工具也不少,例如Soup UIPostmanrobotframework,甚至jmeter这样的性能测试工具均可以进行接口测试。flask

  robotframework测试框架有不少的第三方库能够使用,采用的是填表的方式进行,较容易上手,可是没法深刻底层的了解客户端与服务器的交互过程。jmeter这样的专一性能测试的工具,进行接口测试,有点大材小用的感受并且没法生成测试报告。可是这些工具灵活性不够,也不彻底适用于被测系统。服务器

  综上考虑,决定本身开发一个简单的框架,优势是足够灵活,能够随时根据需求进行变动,后台使用的是python+flask进行开发,这次选用python 2.7.11进行框架的开发,python开发的速度很快,且容易上手,丰富的第三方库,大大加快了开发速度和难度。cookie

框架思路

  因为是框架,因此要考虑到框架的可重用性和可维护性。session

  其次,须要考虑到测试人员编写测试用例的方便性,采用数据驱动的设计方式,将数据分层出来,与业务逻辑剥离。这样测试人员就能够经过数据文件专一的写测试用例,不用关注代码编写,提升了效率。这次框架采用基本的excel进行数据管理。经过对excel 的读取得到数据。架构

  以后将测试的结果生成HTML格式的测试报告发送给相关开发人员。框架

 

第三方库介绍

 

Requests函数

python中有许多针对http的库,例如自带的urllib2,可是自带的urllib2编写起来实在是太费精力,因此采用号称"HTTP forHumans"的requests库。工具

xlrd性能

xlrd使得python能够方便的对excel文件进行读写操做,这次经过xlrd读取excel文件中的测试数据。

以上第三方库均可以经过pip直接安装或者经过pypi下载源码包安装。

 

 

模块介绍

 

 

get_conf:

读取配置文件,得到邮件发送的配置信息,如smtpserver、receiver、sender等。

md5Encode:

部分数据采用md5加密后传输,因此须要把从excel读取的数据进行md5加密。

sendMail:

当测试完成后,将测试报告自动的发送给相关开发人员。

runTest:

此部分读取excel中的数据,调用下方的interfaceTest方法,保存interfaceTest返回的信息。

interfaceTest:

将runTest读取的excel数据做为入参,执行接口测试,并将后台返回的信息返回给runTest

Excel的文件格式以下图,API Purpose记录接口的名称,API Host记录主机地址,Request Methon记录请求方式,能够选择GET或者POST。

Request Data就是构造的测试数据,这里须要注意其格式的书写。

Check Point是检查点的设置,当得到数据后,须要跟检查点的数据进行比对,若是符合,说明测试成功,反之失败。

配置文件的格式以下图:

 


在这里能够设置邮件发送人、接收者、smtp服务器地址以及用户名密码。须要根据实际状况进行改变。

代码实现

 

 


 

  因为全部的操做必须在系统登陆以后进行,一开始没有注意到cookie这一点,每读取一个测试用例,都会新建一个session,致使没法维护上一次请求的cookie。而后将cookie添加入请求头中,可是第二个用例仍然没法执行成功。后来用fiddler抓包分析了一下,发现cookie的值居然是“每一次操做后都会变化的!!!”

  因此只能经过session自动维护cookie。

  在interfaceTest函数中,返回三个值,分别是HTTP CODE,HTTP返回值与session。再将上一次请求的session做为入参传入interfaceTest函数中,在函数内部判断session是否存在,若是不为None,那么直接利用传入的session执行下一个用例,若是为None,那么新建一个session。

不足之处

1.   框架十分简陋,只是简单想法的实现,对于编码的细节没有完善。

2.   HTML的测试报告书写起来比较麻烦,能够考虑引入第三方库进行HTML测试报告的书写,将生成的HTML文件做为附件发送。

3.   只是针对公司内部的软件,换用其余平台就不适用,须要修改源码。

相关文章
相关标签/搜索