单独运行用例模块均通过,但用测试套件运行所有模块时却报错的原因

接口介绍
该项目的主流程即如下5个接口
1.注册接口
2.登录接口
3.项目接口
4.子项目接口
5.成员接口

简单梳理下接口之间的关联:

1.先请求注册接口,得到账号密码等
2.使用注册的账号密码进行登录,得到返回token
3.项目接口使用该token进行添加项目,得到项目ID
4.子项目接口使用token,和项目ID进行请求,得到子项目ID
5.成员接口使用token,项目ID,子项目ID请求,成功添加成员

注意:
1.用例设计暂未考虑异常情况,仅考虑主功能
2.成员接口需要使用到项目ID和子项目ID,这里把项目接口和子项目接口的用例写到成员接口的用例中去,作为其前置条件。故成员接口共有3条用例

单独运行用例,执行结果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
发现单独运行时,每个模块均无报错,执行成功
接下来使用测试套件一并执行,结果如下:

在这里插入图片描述
在这里插入图片描述
发现运行到成员模块时,报错。
为什么会是这样的呢?

通过仔细排查,调试发现:套件运行时,会把到测试方法截至的代码收集到套件中优先执行,这部分代码的作用是动态生成成员接口请求时所需要的数据(项目名啊,子项目名啊等数据)

如图所示
在这里插入图片描述

然而模块运行的顺序是:
子项目模块–>项目模块–>成员模块

所以代码的运行顺序是:
红色标记的代码–>子项目模块代码–>项目模块代码–>成员模块代码

当执行完红色标记的代码后,生成了项目名,子项目名等数据存储了起来,继续执行子项目模块和项目模块时,因为其测试方法内部也有动态生成项目名,子项目名等数据(如下图所示),这样就会把之前存储的数据替换掉,用于请求。并在数据库中生成记录
在这里插入图片描述
在这里插入图片描述

这就导致,代码运行到成员模块时,红色标记的代码因为一早就被执行,所以不会再执行,只会继续执行下面的代码。而数据也是替换过后的数据(已用于请求,故数据库中已存在)

而从接口文档中得知,项目名,子项目名不能重复,所以最终请求成员接口时是报错的,因为使用的数据在数据库中已存在

解决方法:
把红色标记的代码放在setUpClass类方法中,作为前置条件单独执行,运行结果如图:
在这里插入图片描述
也可放在测试方法内部,结果如图:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值