新增接口
api.resp.post("/auth/role_auth", amauth.role.add_auths)
如何测试
如何测试能不能给指定的角色批量的添加权限呢?
- 1、需要新建一个角色
- 2、需要拿到这个角色的ID
- 3、需要新增三个权限
- 4、需要拿到新增的三个权限的ID
- 5、拿着角色ID和权限ID列表,调用批量新增角色接口进行测试
- 6、校验测试结果
- 7、调用根据角色ID批量获取权限的接口
- 8、校验查询结果是否符合预期
测试流程分析
需要新建一个角色
调用 POST:/auth/role 新增角色
需要拿到这个角色的ID
调用 GET:/auth/role 拿到所有的角色,然后根据角色名筛选ID。
需要新增三个权限
调用 POST:/auth/auth 新增三个权限。
需要拿到新增的三个权限的ID
调用 GET:/auth/auth 根据权限名筛选ID。
拿着角色ID和权限ID列表,调用批量新增角色接口进行测试
调用 POST:/auth/role_auth 进行新增。
校验测试结果
status_cod = 200
data[“code”] = 10000
data[“status”] = True
调用根据角色ID批量获取权限的接口
调用 GET:/auth/role_auth/{id} 进行查询
校验查询结果是否符合预期
status_cod = 200
data[“code”] = 10000
data[“status”] = True
data里面有很多个对象,每个对象都有ID。将所有的ID取出来,必须和我们新增时的ID列表相同。
怎么判断两个列表的元素完全相同?
有两种方案可以搞定:
- 比较排序后的两个列表是否相同
- 取交集,如果交集的元素个数和原本的两个集合的元素个数都相同,说明两个集合本身就是相同的。
代码实现
import unittest
import reqclass TestRoleAuthAdd(unittest.TestCase):def test_add_role_auth(self):# 新建角色target_url = "http://127.0.0.1:8888/auth/role"role_name = "testrole"data = {"name": role_name,"nickname": role_name}resp = req.post(target_url, json=data)self.assertEqual(200, resp.status_code)data = resp.json()self.assertEqual(10000, data.get("code"))self.assertTrue(data.get("status"))# 拿到这个角色的IDtarget_url = "http://127.0.0.1:8888/auth/role"resp = req.get(target_url)self.assertEqual(200, resp.status_code)data = resp.json()self.assertEqual(10000, data.get("code"))self.assertTrue(data.get("status"))data = data.get("data")role_id = Nonefor role in data:if role.get("name") == role_name:role_id = role.get("id")breakself.assertIsNotNone(role_id)# 新增三个权限target_url = "http://127.0.0.1:8888/auth/auth"auth_name1 = "GET:/model"auth_name2 = "POST:/model"auth_name3 = "DELETE:/model"resp = req.post(target_url, json={"name": auth_name1, "nickname": auth_name1})self.assertEqual(200, resp.status_code)data = resp.json()self.assertEqual(10000, data.get("code"))self.assertTrue(data.get("status"))resp = req.post(target_url, json={"name": auth_name2, "nickname": auth_name2})self.assertEqual(200, resp.status_code)data = resp.json()self.assertEqual(10000, data.get("code"))self.assertTrue(data.get("status"))resp = req.post(target_url, json={"name": auth_name3, "nickname": auth_name3})self.assertEqual(200, resp.status_code)data = resp.json()self.assertEqual(10000, data.get("code"))self.assertTrue(data.get("status"))# 获取权限ID列表target_url = "http://127.0.0.1:8888/auth/auth"auth_ids = []resp = req.get(target_url)self.assertEqual(200, resp.status_code)data = resp.json()self.assertEqual(10000, data.get("code"))self.assertTrue(data.get("status"))data = data.get("data")for auth in data:if auth.get('name') in (auth_name1, auth_name2, auth_name3):auth_ids.append(auth.get("id"))self.assertEqual(3, len(auth_ids))# 核心:批量绑定target_url = "http://127.0.0.1:8888/auth/role_auth/" + role_idresp = req.post(target_url, json={"ids": auth_ids})self.assertEqual(200, resp.status_code)data = resp.json()self.assertEqual(10000, data.get("code"))self.assertTrue(data.get("status"))# 批量获取权限resp = req.get(target_url)self.assertEqual(200, resp.status_code)data = resp.json()self.assertEqual(10000, data.get("code"))self.assertTrue(data.get("status"))query_ids = []data = data.get("data")for auth in data:if auth.get('name') in (auth_name1, auth_name2, auth_name3):query_ids.append(auth.get("id"))self.assertEqual(3, len(auth_ids))auth_ids.sort()query_ids.sort()self.assertEqual(auth_ids, query_ids)# 删除权限target_url = "http://127.0.0.1:8888/auth/auth"resp = req.delete(target_url, json={"ids": auth_ids})self.assertEqual(200, resp.status_code)data = resp.json()self.assertEqual(10000, data.get("code"))self.assertTrue(data.get("status"))# 删除角色target_url = "http://127.0.0.1:8888/auth/role/" + role_idresp = req.delete(target_url)self.assertEqual(200, resp.status_code)data = resp.json()self.assertEqual(10000, data.get("code"))self.assertTrue(data.get("status"))