【问题标题】:Karate force scenarios inside a feature file to execute sequentially on multiple threads功能文件中的空手道强制场景在多个线程上顺序执行
【发布时间】:2021-03-12 09:56:27
【问题描述】:

当通过竹子/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,扩展。

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

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

线程 4 功能 2 场景 1,然后是场景 2,然后是场景 3,扩展。

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

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

【问题讨论】:

    标签: karate


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢@Peter Thomas。这些场景不一定相互依赖,因为我知道这是不好的做法,但是在运行多个线程时我看到了错误,而在单个线程上没有错误。这就是为什么我想强制每个功能文件按顺序运行场景。如果我将 @parallel=false 添加到所有功能文件,我是否必须向运行这些文件的命令添加任何内容?
    • @CoreySnow 不,你没有。根据经验,如果你把这些神秘的问题原封不动地留下,只会延长你的头痛。另请注意,如果您正在调用 java 代码,一个常见的错误是如果该代码不是线程安全的,您可能会得到这些“错误”。除了投入时间并理解为什么您的测试不是线程安全的之外,我没有其他建议。这不太可能是空手道问题,因为它在野外经过了相当好的测试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    相关资源
    最近更新 更多