今天要来看看最後的 admin_bp
的测试。一样,我们不会做完全每个页面的测试,就大概展示一下就好。
话不多说,我们一样一个一个测试来看,前面说过的就不再多赘述了。
from flask import url_for
from tests.helper import TestModel
class DashboardPageTest(TestModel):
def setUp(self) -> None:
super().setUp()
self.route = url_for("admin.admin_dashboard_posts_page")
def test_get_with_no_auth(self):
res = self.get()
self.assertEqual(res.status_code, 200)
self.assertIn(b"Login", res.data)
def test_get_with_user_auth(self):
res = self.get(login="user")
self.assertEqual(res.status_code, 403)
def test_get_with_admin_auth(self):
res = self.get(login="admin")
self.assertEqual(res.status_code, 200)
self.assertIn(b"Admin Dashboard", res.data)
这是管理员控制台的测试,但这是给贴文的 (admin_dashboard_posts_page
),给留言的也同理 (admin_dashboard_comments_page
),就不特别再写了。当然它会有很多功能,但我们就先跳过。因为这是管理员的页面,所以我们用 test_get_with_admin_auth
来测试一个用管理员登入之後再抓这个页面,他的 assertIn
一样是判断 navbar。而如果只是一般使用者跑来这个页面的话,他会回传 403。在这边他在没有登入的状况下抓这个控制台页面他会回传 200,这是因为我们到时候会把 401 处理掉,变成重新导向到登入页面之类的。
接下来是使用者管理介面的测试。
class ManageUserPageTest(TestModel):
def setUp(self) -> None:
super().setUp()
self.route = url_for("admin.manage_user_page")
self.data_ok = {
"username": "user3",
"password": "password",
"email": "[email protected]",
"is_admin": False,
}
self.data_bad_empty_field = {"username": "user3"}
def test_get_with_no_auth(self):
res = self.get()
self.assertEqual(res.status_code, 200)
self.assertIn(b"Login", res.data)
def test_get_with_user_auth(self):
res = self.get(login="user")
self.assertEqual(res.status_code, 403)
def test_get_with_admin_auth(self):
res = self.get(login="admin")
self.assertEqual(res.status_code, 200)
self.assertIn(b"Admin Dashboard", res.data)
def test_post_ok(self):
res = self.post(login="admin", data=self.data_ok)
self.assertEqual(res.status_code, 200)
self.assertIn(b"Add user successfully.", res.data)
def test_post_bad_empty_field(self):
res = self.post(login="admin", data=self.data_bad_empty_field)
self.assertEqual(res.status_code, 200)
self.assertIn(b"This field is required.", res.data)
在 setUp
里面我们放了一个 OK 的资料和一个有栏位留空的资料,这两笔资料都是用来新增一个使用者的,我们之後会把一个新增使用者的表单放在这里,让管理员可以快速新增帐号。这个判断空栏位一样是 Flask-WTF 处理的,也当然可以自订这个错误讯息。在测试 OK 的资料里面,我们也加了一个讯息,这是到时候新增使用者成功时会 flash
出来的,同样的道理,在登入、注册等等页面也都可以加入类似的讯息来判断。
到这边为止,我们就把简略的测试写好了。当然有很多页面根本没测试到,也有很多功能也都没有去特别处理,但这就是展示,如果需要的话可以自己想想觉得还缺甚麽,然後慢慢补齐。
我们在写测试的最一开始有在 manage.py
里面加入一个 flask test
的指令,现在全部写完了,可以来跑跑看。没有意外的话应该会喷出一堆 error (基本上都是路径抓不到的问题) 跟 failed,我们最後的目标就是把他们修到好。
<<: Android Studio初学笔记-Day2-LinearLayout介绍
>>: 那些被忽略但很好用的 Web API / Console
上一篇我们的基因体时代-AI, Data和生物资讯 Day22- 基因注释资料在Bioconduct...
MLOps is an emerging discipline and comprises a s...
风险 表示发生,可能会对价值或资产造成负面的冲击。 风险是外部威胁利用弱点对内部资产造成冲击的可能性...
Lambda在刚开始学Java一定会很不想碰,会觉得好不容易对Java有点熟悉了,结果又搞出一整陀新...
过了这麽多天, 我们终於进入到主题了, 这一次我们使用的题目, 是输入一个正整数(西元年), 然後判...