@karate如何将参数传递给加特林模拟类中的特征文件?

2023-12-29

让我们考虑一个场景,我们必须运行“创建帐户 api”的性能测试,该测试将输入作为标头/路径参数“Auth token”并输入诸如用户帐户名称之类的数据。因此,对于上述场景,我们有 2 个功能文件,

运行 POST 性能测试http://baseUrl/auth_param/create/input_data http://baseUrl/auth_param/create/input_data1. 一个具有身份验证功能的功能(例如:generateAuth.feature)文件 代币 2. 第二个功能(createAccount.feature)文件,其参数为 身份验证令牌,输入数据。

这是我的模拟课,

class <MyClass> extends Simulation {

  before {
    println("Simulation is about to start!")
  }
  val generateAuthTest = scenario("generateAuth").exec(karateFeature("classpath:path/generateAuth.feature")) 
  val createAccountTest = scenario("test").exec(karateFeature("classpath:path/createAccount.feature"))
  setUp(
    createAccountTest.inject(rampUsers(1) over (10 seconds))).maxDuration(1 minutes)
  after {
    println("Simulation is finished!")
  }
}

在这里,我可以从 createAuth.feature 文件中读取 auth (该文件是 createAccount.feature 文件的输入),以便我可以作为参数传递吗?请建议我在调用空手道功能方法时如何传递参数来创建 Account.feature。

在这里我提出一个要求,

假设我们有一些针对特定数据进行 CRUD 操作的功能文件。这是我如何编写功能场景,

  1. 我将创建新的功能文件来编写场景
  2. 只需使用 CRUD 文件来测试单个流。

现在,如果我对单个操作进行性能测试用例,我觉得有两种方法,

  1. 创建新的 4 个性能测试功能文件(每个 CRUD 一个) 方法)并在相应的测试中调用这些 CRUD 功能文件 特征文件。最后我们只调用测试特征文件 各自的加特林模拟类。 **(在这种情况下,我最终将创建更多测试功能文件以及模拟类 性能,我想避免)**
  2. 只需在相应的加特林模拟类中调用 CRUD 文件即可 将所需的参数传递给他们。(在这种情况下,我们只需要创建4个模拟 类并在创建、读取、删除等基本操作上运行它们)

这里只是想知道性能测试的第二种方法,它在空手道中是否可以实现,如果可以,请告诉我如何实现?

摘要-我认为使用第三个功能文件(额外)可以实现 个别用例,但我不想制作额外的功能文件 对于每种情况,这样我就可以避免维护工作并可以采取 现有功能文件的可重用性的优点 测试到性能测试。


只需使用普通的空手道概念,例如karate-config.js https://github.com/intuit/karate#configuration

您可以轻松地切换环境 https://github.com/intuit/karate#switching-the-environment通过设置karate.env系统属性。

例如:

mvn test -DargLine="-Dkarate.env=e2e"

编辑:编辑问题后,很明显您有一个要测试的流程。请使用单一功能。我建议你移动generateAuth进入Background的功能。另请参阅文档callSingle()对于高级选项。

如果您期望 2 个功能文件神奇地共享数据,那么如果您正确构建测试,那么这是不可能且不需要的。

如果您确实需要这个,请创建一个 Java 单例并从每个功能访问它。不过完全不推荐这个。

编辑:在空手道 0.9.0 以后,你可以如果某个功能具有标签,则调用该功能中的单个场景 https://github.com/intuit/karate#call-tag-selector:

classpath:animals/cats/create.feature@sometagname
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

@karate如何将参数传递给加特林模拟类中的特征文件? 的相关文章

  • 在 AKKA 中,对主管调用 shutdown 是否会停止其监督的所有参与者?

    假设我有一位主管连接了 2 位演员 当我的应用程序关闭时 我想优雅地关闭这些参与者 调用supervisor shutdown 是否会停止所有参与者 还是我仍然需要手动停止我的参与者 gracias 阻止主管 https github co
  • 在 Scala 中创建任意类作为 monad 实例

    为了使任何东西都可以在 monad 上下文中操作 如果使用 Haskell 我只需在任何地方为给定类型添加类 Monad 的实现 所以我根本不接触数据类型定义的来源 像 人造的东西 data Z a MyZLeft a MyZRight a
  • Akka Stream - 根据 Flow 中的元素选择 Sink

    我正在使用 Akka 流创建一个简单的消息传递服务 该服务就像邮件递送一样 其中来自源的元素包括destination and content like case class Message destination String conte
  • 使用 lift-json 反序列化具有 Map[String,Any] 属性的案例类

    几天来我一直在努力解决一些通过 lift json 应该很简单的事情 将映射序列化为 JSON 我知道 我知道 根对象还不能是 List 或 Map 但我愿意暂时包装在一个案例类中 但我仍然无法让它工作 感谢一些堆栈溢出帮助 我已经可以进行
  • Scala 将集合转变为按键映射的最佳方法?

    如果我有一个收藏c类型的T并且有一个属性p on T 类型P 说 最好的方法是什么按提取键映射 val c Collection T val m Map P T 一种方法如下 m new HashMap P T c foreach t gt
  • 使一个 sbt 配置依赖于另一个配置

    sbt 文档显示了如何仅在项目之间声明依赖关系的示例 但我确信有方法可以声明一个配置依赖于另一个配置 就像测试配置使用编译配置中的类路径一样 如何声明我自己的配置 以便它依赖于编译配置生成的类路径 我更仔细地研究了建议的解决方案 然后又出现
  • 如何使用 *non-case* 类通过 Scala 从 JSON 反序列化?

    我正在编写一个 Scala 应用程序 需要序列化和反序列化 JSON 某些 JSON 对象具有超过 22 个字段 因此我无法使用案例类 并且也无法更改格式 我找到的所有 Scala JSON 库都只能 轻松地 与案例类一起使用 而不是与普通
  • Scala 中的模式匹配是如何在字节码级别实现的?

    Scala 中的模式匹配是如何在字节码级别实现的 是不是像一系列if x instanceof Foo 构造 还是其他什么 它对性能有何影响 例如 给出以下代码 来自Scala 示例 http www scala lang org docu
  • Spark JSON 文本字段到 RDD

    我有一个 cassandra 表 其中有一个名为 snapshot 的文本类型字段 其中包含 JSON 对象 identifier timestamp snapshot 我了解到 为了能够使用 Spark 对该字段进行转换 我需要将该 RD
  • 将括号子集映射到字符

    我正在尝试创建一个 Scala 方法 该方法将采用一个父括号组 表示为字符串 然后将每个括号子组映射到不同的字母 然后它应该将它们放入它返回的映射中 所以基本上我调用以下方法 如下所示 val s 2 x 3 6 val map mapPa
  • 如何对 RDD 进行分区

    我有一个文本文件 其中包含大量由空格分隔的随机浮动值 我正在将此文件加载到 scala 中的 RDD 中 这个RDD是如何分区的 另外 是否有任何方法可以生成自定义分区 以便所有分区都具有相同数量的元素以及每个分区的索引 val dRDD
  • 如何在 Karate UI 中使用 javascript 执行器

    首先 空手道 UI 自动化确实是很棒的工具 我在使用空手道编写 UI 测试时有点享受它 我遇到了一种情况 我试图获取 ShadowRoot 元素 我读了一些与空手道的 javascript 执行器相关的类似帖子 并了解到它已经得到解答 推荐
  • 将结构数组分解为 Spark 中的列

    我想将结构数组分解为列 由结构字段定义 例如 root arr array nullable true element struct containsNull true id long nullable false name string
  • 如何在 Scala 中使用 Circe 解码 JSON 列表/数组

    我有代码片段 cursor downField params downField playlist downField items as List Clip 其中 Clip 是字符串和数字的简单 case 类 传入的 Json 应包含一个
  • 在 Scala 中创建 Java 对象

    我有一个 Java 类 Listings 我在 Java MapReduce 作业中使用它 如下所示 public void map Object key Text value Context context throws IOExcept
  • 在 Scala 中使用隐式的良好实践 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 是否有任何客观原因在代码中到处使用隐式参数只是为了缩短应传递的参数数量 我有一个 REST API 端点的每个调用都有一个唯一的 ID 应该在调
  • 将类型信息传递给 Scala 中的函数

    我有对 json 对象执行一些常见操作的代码 即提取 所以我想创建一个通用函数 它接受哪个类的类型参数 代码如下所示 def getMessageType T json JValue Either GenericError T try Ri
  • Scalaz 状态 monad 示例

    我还没有看到很多 scalaz 状态单子的例子 有这个例子 http scalaz github com scalaz scalaz 2 9 1 6 0 2 doc sxr scalaz example ExampleState scala
  • 如何在 Scala Play 框架中进行 Twitter 反向身份验证?

    我正在编写一个 play 应用程序 在 scala 中 并且正在尝试执行 twitter 此处概述的反向身份验证步骤 https dev twitter com docs ios using reverse auth https dev t
  • 如何在 AWS S3 中保存和使用 Spark History Server 日志

    我想在AWS S3中记录和查看Spark历史服务器的事件日志 以下是spark defaults conf中记录的属性 spark hadoop fs s3a impl org apache hadoop fs s3a S3AFileSys

随机推荐