python2.7的flask框架之进行简单的应用测试

通过之前的学习嘞,咱们已经构建了一个简单的blog程序。到这个程度嘞,咱们的flask框架的应用算是简单的入了门了。

但是有句话说得好啊,没有经过测试的东西都是不完整的。这句话是谁说的,反正我是不知道,虽然它不是完全正确的,但是仍然离真理不远。没有测试过的应用将会使得提高现有代码质量很困难,但是如果一个应用拥有自动化测试,那么我们就可以安全的修改然后立刻知道是否有错误。

所以我们就来看下,这个flask框架的Werkzeug 测试 ,也就是Client 暴露出来,并且为我们操作这些内容的本地上下文变量,最后您就可以将自己最喜欢的测试解决方案应用于其上了。我们这次将会使用Python自带的 unittest 包。

完事,我们以之前建立的应用为测试体,然后我们在blog同级的目录下,建立test.py文件,完事添加如下代码:

python2.7的flask框架之进行简单的应用测试

 然后嘞,我们来运行这个文件,看下我们的语法有没有错误:

python2.7的flask框架之进行简单的应用测试

很明显,没有错误提示。这就代表着,我们最起码基本的语法是正确的,所以,我们来看下上述代码究竟干了什么。

首先,上述代码中的setUp() 方法的代码创建了一个新的测试客户端并且初始化了一个新的数据库,并且,这个函数将会在每次独立的测试函数运行之前运行。

因为要在测试之后删除这个数据库,所以我们在 tearDown() 函数当中关闭这个文件,并将它从文件系统中删除。同时,在初始化的时候 TESTING 配置标志被**,这将会使得处理请求时的错误捕捉失效,以便于我们在进行对应用发出请求的测试时获得更好的错误反馈。

上述代码中的这个测试客户端将会给我们一个通向应用的简单接口,我们可以激发对向应用发送请求的测试,并且此客户端也会帮我们记录 Cookie 的动态。

好啦,我们接下来就来尝试第一个测试。

我们先来看这个根目录的测试,也就是向test文件中做出如下修改:

python2.7的flask框架之进行简单的应用测试

 当访问我本地根路径(/)时,我的项目返回结果如下:

python2.7的flask框架之进行简单的应用测试

以为我们要检测的是当我们访问根路径(/)时应用程序是否正确地返回了我们想要的数据,所以我在这个页面随便复制一点东西,放到了assert 后面,然后,这个函数就是用来检测某个值是否包含(in)在某个数值之中。

我们也可以这么理解,就是我们通过使用 self.app.get 发送一个 HTTP GET 请求给应用的某个给定路径,然后返回值将会是一个 response_class 对象,所以我们可以使用 data 属性来检查程序的返回值(以字符串类型)。然后在这里,我们检查 'we make love so wwe lo' 是不是输出内容的一部分。

然后我们来看下上述代码的运行结果:

python2.7的flask框架之进行简单的应用测试

这是成功的案例,如果失败的话,会报错的,所以大家可以按着这个脚本先来尝试下。

这里简单提一下哈,咱们每个需要测试的函数都是以 test 开头,unittest 模块自动识别出哪些方法是一个测试方法,并且运行它。记得哈。

然后,我们来测试登陆模块。不过因为向登陆和登出页面发送一些请求,这些请求都携带了表单数据(用户名和密码),所以登陆和登出页面都会重定向,然后嘞,我们将客户端设置为 follow_redirects ,就可以了,接下来,我们来对test文件做出如下修改:

python2.7的flask框架之进行简单的应用测试

上述代码中的cuijinpeng和201314是正确的用户名密码,完事我们来测试这两个应用:

python2.7的flask框架之进行简单的应用测试

出现红色框框的界面就代表着我们已经测试完成了。之后,咱们再来测试最后一个博文添加的方法:

python2.7的flask框架之进行简单的应用测试

代码编辑完成之后,咱们就来同时测试下着三个方法是否是如同咱们所希望的那样,已经在正常的运行了:

python2.7的flask框架之进行简单的应用测试

出现如下界面就算是测试完成了。

简单的测试呢,到这里,就算是结束了。当然还有其他的测试方法,或者更为复杂的诸如请求的头信息和状态值等,咱们这里就不赘述了,之后或许会陆续更新。

好啦,这次记录就到这里了。

如果感觉不错的话,请多多点赞支持哦。。。