天天看点

测试平台系列(18) 项目用例表设计和权限改造

上一节,我们说到了关于整个用例执行的生命周期。我后面细想了一下,如果一开始就要完全兼容「代码生成」的话,写起来会很费时间。为了给大家一些好的体验,还是得一口一口地吃,不能一下吃胖。

<code>所以我们就先完成无码模式吧~</code>

我们的用例后续如果要方便管理,肯定是需要做一些「分类」和「权限」的控制,所以我们先设计几个核心的表:

项目表

用例分布在各个项目,类似于目录的概念,不同的用例位于不同的项目之中,方便用例进行分类。

项目角色表

每个项目都是需要有自己的「成员」,对于成员们来说,他们因为身份的不同,身上担负的职责也不一样,我们给出几个简单的身份如:

组长和组员,其中组长可以对组员进行相关权限的变化。

测试用例表

存放了各个用例的信息,是测试平台的一个最小的执行单元。

大概分为以下几个字段,除了创建/更新时间/用户以外,还有以下字段:

owner(组长) name(项目名) private(是否私有)

与上个表单类似,project_id是项目id,project_role是项目角色。

咱们规定:

1: 组长 2: 组员

基本上内容都在comment注释里面了,大家看着就行,也不多讲解了。肯定现在还有一些特性没有考虑到的,后序可以「加字段」解决。

我们在上面三张表里面定义好了<code>create_user</code>和<code>update_user</code>,其实这2个字段接受的都是咱们的用户id,而用户id又是可以通过<code>token</code>进行解析的。

测试平台系列(18) 项目用例表设计和权限改造

之前编写过的解析token的方法

还记得之前编写过的解析token的方法吗?我们现在就来编写一个装饰器: 自动判断用户token是否有效以及获取用户信息。

测试平台系列(18) 项目用例表设计和权限改造

原理很简单,就是通过headers中的token字段获取token,经过解析后拿到「用户信息」,这里更加复杂一点,对于那种需要有权限控制的地方,我们做了一层判断,如果权限在配置范围以下,那么普通成员就不能调用这个接口。

完整代码:

<code>kwargs["user_info"] = user_info</code>

重点注意一下这句话。

测试平台系列(18) 项目用例表设计和权限改造

这里插入咱们刚才的permission即可

由于我们这个接口暂时支持登录用户使用,所以权限默认就行了,也就是说用户role为0(普通用户)即可!

测试平台系列(18) 项目用例表设计和权限改造

改动很简单,导入permission并使用

这里需要注意的是,我们的http_request必须带有<code>user_info</code>参数,否则会报错,因为我们后续可能会用到用户信息。

因为我们之前前端在请求接口的时候,是不会带上用户token的,所以我们需要「改造」前端请求方法:

在发送http请求的时候带上token数据

校验返回code,如果为401则自动注销用户,提示用户未登录!

创建src/utils/auth.js

这里编写了获取token并组成headers的方法,也编写了针对token过期,权限不够的code码进行不同的处理。

修改src/services/request.js

测试平台系列(18) 项目用例表设计和权限改造

修改请求结果:

测试平台系列(18) 项目用例表设计和权限改造

请求结束后,只有当返回true状态时才设置response

开始测试

发现我们的错误信息并没有完全展示,是因为我们需要没有针对请求失败的情况进行校验,所以我们还需要调整后端接口:

测试平台系列(18) 项目用例表设计和权限改造

判断里面的「status」是否为True,不为True的话返回「110状态码」

来个动态图测试一下吧:

测试平台系列(18) 项目用例表设计和权限改造

通过开发者工具的application可以看到:

测试平台系列(18) 项目用例表设计和权限改造

我们的role默认是0

接着我们调整一下权限为: 只有「管理员可以请求接口」

测试平台系列(18) 项目用例表设计和权限改造

来个动图看看:

测试平台系列(18) 项目用例表设计和权限改造
测试平台系列(18) 项目用例表设计和权限改造