首页 > 解决方案 > 功能文件中的空手道强制场景在多个线程上顺序执行

问题描述

当通过竹子/Maven运行我的所有功能文件时,使用“clean test”命令,我如何强制每个功能文件中的场景按顺序运行?在多个线程上。例如,如果我有 100 个功能文件,每个功能文件中有 20 个场景,当我用 5 个线程运行它们时,功能文件的顺序无关紧要,功能 10 可以在功能 15 之前运行,但里面的场景每个功能必须按顺序运行。我需要运行功能 10 场景 1,然后功能 10 场景 2,依此类推。

所以有5个线程:

线程 1 可以运行功能 1

线程 2 可以运行功能 10

线程 3 可以运行功能 3

线程 4 可以运行功能 2

线程 5 可以运行功能 4

但我需要每个场景 1 到 20,按顺序执行。

所以有5个线程:

线程 1 功能 1 场景 1,然后是场景 2,然后是场景 3,ext。

线程 2 功能 10 场景 1,然后是场景 2,然后是场景 3,ext。

线程 3 功能 3 场景 1,然后是场景 2,然后是场景 3,ext。

线程 4 功能 2 场景 1,然后是场景 2,然后是场景 3,分机。

线程 5 功能 4 场景 1,然后是场景 2,然后是场景 3,ext。

@parallel=false 是答案吗?我真的需要将它添加到每个功能文件的顶部吗?就像我说的那样,我的存储库中可以有 100 个功能文件,也许更多。或者我必须在命令行上添加 @parallel=false 吗?如果是这样,它会像其他选项一样,“-Dparallel=false”吗?

标签: karate

解决方案


如果你的Scenario-s 被写成它们相互依赖,这是一个不好的做法。请仔细阅读:https ://stackoverflow.com/a/46080568/143475 。

所以是的,空手道不支持“全局”开关来启用您描述的行为。原因之一是阻止不良做法。

您必须添加@parallel=false所有功能。由于一些行为变化,即使这可能在 1.0 版本中也没有您想要的效果:https ://github.com/intuit/karate/wiki/1.0-upgrade-guide


推荐阅读