针对此种状况,选用接口测试较为有效。python
针对接口测试的自动化工具也不少,例如Soup UI、Postman、robotframework,甚至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. 只是针对公司内部的软件,换用其余平台就不适用,须要修改源码。