您的位置:首页 > 编程语言 > Python开发

测试小卒子--python--Django 测试框架

2016-07-02 15:14 295 查看
之前做接口测试的时候,一直在用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 就可以了。

好啦,到现在我们的自动化框架就搭好啦。之后对框架的内容进行补充就可以了。如果有什么建议或者问题,可以留言给我,我会加以改正和解答。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息