之前做接口测试的时候,一直在用jmeter做,虽然使用简单方便,但是对于接口返回数据的校验,处理方式还是不够简便。于是便开始通过编写脚本来进行接口测试,至于用什么语言来编写,这还用想,当然是python了。
如果只是写脚本的话,用python自身的requests就可以了,写起来也比较简单。但是在不断的脚本积累过程当中,会发现python的一些方法太过于繁琐,在不断的改进过程当中,发现了Django rest framework,这个开源框架。
其实testing只是Django rest framework中的一部分。正如他的官方文档所说:Django REST framework 是一个轻量级的库,可以很容易地构建Web API。它被设计为一个模块化,易于自定义的体系结构,基于Django的基础类视图,而testing又只是Django rest framework中的一个模块。
个人觉得Django rest framework 就是在Django 的基础上重写了一些方法,应用起来更方便。
言归正传,继续谈这个测试框架, 其实我在上面已经把为什么用这个框架的背景说的很清楚了。在实现接口测试自动化的时,我们需要准备一些必备的环境和软件。
1、环境搭建
python 2.7.8 (个人目前在用2.7.8版本的,对于3以上的版本不太熟悉,之后会学习)
Django (1.7+, 1.8, 1.9)
python-mysql
django rest framework(2.4.3)
django-nose (1.4.2)
coverage(4.0.1)
nose(1.3.7)
pytest(2.6.4)
pip(6.1.1)
在搭建环境的过程中,需要安装python,然后安装pip ,以上的其他,可以用 pip install 进行安装。
2、配置文件
安装好以上所列的package后,就可以创建你自己的测试项目了,因为考虑到框架的原因,我们用django 的命令去创建项目。
django-admin.py startproject test 创建一个名叫test的测试项目
执行这个命令后,test这个项目就创建成功了,在这个项目中包含以下文件:
manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
init.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
settings.py: 该 Django 项目的设置/配置。
urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站”目录”。
wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。
这时文件的基本内容就确定了,这时,你可以在test项目中,创建你需要的文件夹。例如存放cases, libs, utils 等等。
3、编写合适的测试报告输出配置文件
我们既然要实现接口自动化,就需要一个检验的标准,这个标准就是测试报告,我们可以在settings.py文件夹中,设置输出测试报告的形式,包含html,xml 形式的测试报告甚至还可以输出覆盖率报告。
之前的package中包含了,coverage 和 nose 这两个包,下面是官方文档,
http://pythontesting.net/framework/nose/nose-introduction/
http://coverage.readthedocs.io/en/latest/
可以参照这个内容进行settings.py中文件的配置。我做了一写简单的配置,如下所示。
NOSE_ARGS = [
'--with-coverage',
'--cover-package=test_package,...',
'--cover-erase',
'--cover-html',
'--cover-html-dir = path',
'--cover-inclusive',
]
4、执行
配置好上述的步骤后,就可以编写测试脚本了,例如:
test.py
#!/usr/local/bin/python
#-*- coding: utf-8 -*-
from rest_framework.test import APITestCase
from rest_framework.test import APIClient
class TestCase(APITestCase):
'''
test case
'''
def testcase(self):
response = self.client.get('http://www.baidu.com')
self.assertEqual(response.status, 200)
之后执行 ./manage.py test test.py 就可以了。
好啦,到现在我们的自动化框架就搭好啦。之后对框架的内容进行补充就可以了。如果有什么建议或者问题,可以留言给我,我会加以改正和解答。