问答 场景化用例执行一半无法继续执行

shelkio · 2022年10月29日 · 最后由 kiki 回复于 2022年11月09日 · 10738 次阅读

业务场景
用例 1-用例 2-用例 3
到达用例 3 发现不满足继续执行的条件
那我就要继续从用例 1 开始执行吧
那要怎样才能重头执行呢
目前框架 pytest

还是说到达用例 3 执行不下去直接就失败了
pytest 有失败重试 但只能标记其中一条吧 并不是从头重新执行

共收到 10 条回复 时间 点赞

如果做好测试用例的单一性,应该不存在你说的这种问题。

你安排的这一组测试用例,就是为了测试某个确定性的场景,所以不应该存在用例 3 满足不了条件,如果满足不了,就是有问题的啊。应该从用例 1 的测试数据准备开始,就是为了这个场景能够被执行下去。

个人不是很建议在场景用例中做过多的判断,否则这个场景要做验什么,到最后你自己都搞不清楚。如果分支过多,那测试用例执行通过了,你到底是验证到了哪个分支,你自己都不知道。

你把用例理解为业务逻辑 + 断言,用例 1-用例 2-用例 3 就可以拆分成:
用例 1=流程 1+ 断言,
用例 2=流程 1+ 流程 2+ 断言,
用例 3=流程 1+ 流程 2+ 流程 3+ 断言,
用例 3 失败了不就从流程 1 开始走了么。

另外就场景法来说
流程 1->流程 2->流程 3 这个场景属于基本场景,只看正向覆盖,只需要 1 条用例覆盖整条即可。
中间流程 1、流程 2 如果有其他分支应该作为可选场景进行路径覆盖。(比如流程 1->流程 4)

CKL的思考 回复

确实应该从一开始就确定某一场景,但问题是用例 1 的时候并没法区分所要执行的场景,除非固定死这一种场景就用这一条数据。
我目前做法是随机获取一条数据,只有一条场景是,用例 2 的数据会关联到用例 3,所以会出现到用例 3 执行不下去,需要修改用例 2 的数据,用例 3 才有可能执行下去 。其他场景的用例 3 不会有这种情况

Ouroboros 回复

用例 3 里面包括流程 1-流程-2,难道把流程 1、2 写成函数来调用吗,这样用例 3 里都包括了用例 1、2 了,为啥还要分别写个用例 1、2。

用例设计最好都是单独可执行吧,流程 3 如果必须要流程 1、2 的数据,那可以前置生成吧。

shelkio 回复

用例是用例,流程是流程。1、2 没有啥分支流程,本来就只需要个 3 就行。

用例之间不是应该能独立运行吗

Ouroboros 回复

有道理,自动化用例不要相互依赖,要保证独立性。 做到单条用例可执行

@Ngwind @mspring
意思就是,当前这一条用例的所需要条件,都要在运行这一条用例时生成。
另外一条用例也需要条件在运行这一条用例继续生成一下,可以这样理解吧

那这样所需前置,不两条用例都调用了一下吗。我以前理解是重复了,现在看来这样是无法避免的吧。
因为前置肯定是不一样的参数才能对应上 上述两条用例

如果场景用例 1、2、3 是一个完整场景相关步骤
首先、执行前要确保用例场景已设置正确,或可以自动设置
场景条件满足后,如果执行过程中发现步骤 3 又不具备条件执行,那应属于用例执行失败

如果场景用例 1、2、3 是单独的场景用例,之前的验证没有关联性,应对其数据/条件进行解耦,结果清晰

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册