博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
测试Flask应用_学习笔记
阅读量:5918 次
发布时间:2019-06-19

本文共 2376 字,大约阅读时间需要 7 分钟。

源代码尽在我的github上面:https://github.com/521xueweihan

欢迎大家交流学习

"""setUp() 方法中会创建一个新的测试客户端并初始化一个新的数据库。在每个独立的测试函数运行前都会调用这个方法。 tearDown() 方法的功能是在测试结束后关闭文件,并在文件系统中删除数据库文件。另外在设置中 TESTING 标志开启的,这意味着在请求时关闭错误捕捉,以便于在执行测试请求时得到更好的错误报告。测试客户端会给我们提供一个简单的应用接口。我们可以通过这个接口向应用发送测试 请求。客户端还可以追踪 cookies 。因为 SQLite3 是基于文件系统的,所以我们可以方便地使用临时文件模块来创建一个临时 数据库并初始化它。 mkstemp() 函数返回两个东西:一个低级别的文件句柄和一个随机文件名。这个文件名后面将作为我们的数据库名称。我们必须把句柄保存 到 db_fd 中,以便于以后用 os.close() 函数来关闭文件。"""    class FlaskrTestCase(unittest.TestCase):    def setUp(self):        self.db_fb, flaskr.app.config['DATABASE'] = tempfile.mkstemp()        flaskr.app.config['TESTING'] = True        self.app = flaskr.app.test_client()        flaskr.init_db()            def tearDown(self):        os.close(self.db_fb)        os.unlink(flaskr.app.config['DATABASE'])        # 当我们访问应用的根URL(/)时应该显示‘No entries here so far’# 注意:调试函数都是以test开头的,这样unittest就会自动识别这些测试的函数# 并运行他们。      def test_empty_db(self):        rv = self.app.get('/')        assert 'No entries here so far' in rv.data# 这里测试应用的登录和注册。测试的方法是使用规定的用户名和密码向应用发出# 的登录和注销的请求。因为登录和注销后会重定向到别的页面,因此需要follow_redirects# 追踪重定向            def login(self, username, password):        return self.app.post('/login', data=dict(            username = username,            password = password        ), follow_redirects = True) # follow_redirects追踪重定向                def logout(self):        return self.app.get('/logout', follow_redirects = True)    def test_login_logout(self):        rv = self.login('admin', 'default')        assert 'You were logged in' in rv.data        rv = self.logout()        assert 'You were logged out' in rv.data        rv = self.login('adminx', 'default')        assert 'Invalid username' in rv.data        rv = self.login('admin', 'defaultx')        assert 'Invalid password' in rv.data        # 测试增加条目功能    def test_messages(self):        self.login('admin', 'default')        rv = self.app.post('/add', data=dict(            title = '
', text = '
HTML allowed here' ), follow_redirects = True) assert 'No entries here so far' not in rv.data assert '<Hello>' in rv.data assert '
HTML allowed here' in rv.data if __name__ == '__main__': unittest.main() # 笔记# 伪造资源和环境——我的理解就是通过# with app.test_client() as c:# c.get('/users/me')--传入测试值# assert_equal()——对比两个数据,从而得出判断结果

 

转载地址:http://imfvx.baihongyu.com/

你可能感兴趣的文章
FineReport中JS如何自定义按钮导出
查看>>
Linux正则表达式语法
查看>>
MFC中的字符串转换
查看>>
自动删除n天前日志
查看>>
常用端口号及对应服务
查看>>
Expected put message. Got: ERROR (2072211)
查看>>
configure: error: newly created file is older than distributed files!
查看>>
python 之三级菜单
查看>>
Python-列表
查看>>
2017中国混合云十大用户重磅出炉
查看>>
11g内存管理新特性的internal表现
查看>>
泛型接口的定义与使用
查看>>
DBA角色不存在
查看>>
mysql字符集乱码问题
查看>>
【21】Python100例基础练习(5)
查看>>
Tips Tips
查看>>
spring项目的 WebApplicationContext 初始化两次的解决方法
查看>>
CLOUD 02: elk
查看>>
Python写的Web spider(网络爬虫)
查看>>
Android之Toast通知的几种自定义用法
查看>>