在空手道 DSL 功能文件中使用模拟并独立运行

2024-05-18

我有 REST 服务,用不同于 Java 的语言编写。 它与其他 REST 服务几乎没有依赖关系。

例如正在开发和测试的服务是A,其他服务分别是B and C.

我想运行系统测试A,一些测试需要B or/and C在线并执行查询A.

我编写了 b-mock.featue 和 c-mock.feature 来表示模拟中的服务。

我还编写了一些 a-test-smth.feature 文件来运行测试A

是否可以在 a-test-smth.feature 中添加一些信息以启用一些模拟以进行具体测试?

现在我应该运行独立的 karate.jar 两次,首先是为了模拟。第二个 - 用于运行测试。这种方法有效,但是,我无法验证:

  • 一些 API 调用A不需要B or C
  • 无法模拟服务B下降或者例如缓慢或不正确的响应答案获取

Thanks.


您使用 Java 吗?如果是这样,那么最好的方法是在 Java 代码中执行测试设置。您可以为 B 和 c 启动 2 个模拟,then开始对服务 A 进行主要测试。最后根据需要进行清理。

您可以参考这个例子:https://github.com/intuit/karate/tree/master/karate-netty#consumer-provider-example https://github.com/intuit/karate/tree/master/karate-netty#consumer-provider-example

第 3 行展示了如何开始模拟并运行空手道测试。

如果您不使用 Java 但想使用only独立的 JAR,实际上可以使用 Java 互操作,而且非常简单,我刚刚尝试过。

编辑:此 API 现在已内置到 Karate 中,因此您无需编写以下额外的 JS 代码:https://github.com/intuit/karate/tree/master/karate-netty#within-a-karate-test https://github.com/intuit/karate/tree/master/karate-netty#within-a-karate-test

(过时的)

首先创建一段足够智能的 JavaScript 代码来启动空手道模拟:

function() {
  var Mock = Java.type('com.intuit.karate.netty.FeatureServer');
  var file = new java.io.File('src/test/java/mock/web/cats-mock.feature');
  var server = Mock.start(file, 0, false, null);
  return server.port;
}

这就是它在Background您的主要空手道测试。您可以了解如何在需要时执行一些条件逻辑,并且您有很多方法可以根据您的环境进行更改。

Background:
    * def starter = read('start-mock.js')
    * def port = karate.env == 'mock' ? starter() : 8080
    * url 'http://localhost:' + port + '/cats'

这回答了你的问题了吗 ?让我知道,我会将这个技巧添加到文档中!

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

在空手道 DSL 功能文件中使用模拟并独立运行 的相关文章

随机推荐

  • 如何将 discord.py help 命令放入嵌入中?

    因此 我目前有一个使用 Discord py 运行的 Discord 机器人 正如您所知 discord py 带有自己的帮助命令 所以我不必自己制作 它非常有用 我将命令分为齿轮 类别 它确实有助于简化 因为现在我不必编写自己的帮助命令
  • 调用高阶组件时在 React 中访问类外部的 prop

    我正在尝试使用高阶组件 HOC 模式来重用一些连接到状态并使用 Redux Form formValueSelector 方法的代码 formValueSelector 需要一个引用表单名称的字符串 我想动态地设置它 并且每当我需要项目的值
  • 使用 WebServiceContext 测试 @Webservice EJB(使用 OpenEJB?)

    我有一些 EJB 作为 JAX WS Web 服务 WebService Stateless Remote MobileFacade class public class MobileFacadeBean implements Mobile
  • 如何删除 Sql Server 2005 中存在的临时 SP

    我的问题很简单 如何删除临时存储过程 如果存在 这是因为当我在脚本中创建临时 SP 时 它会在第二次运行时抛出类似 数据库中已存在名为 sp name 的对象 的错误 我不想向用户显示此消息 请帮我 您的解决方案受到高度赞赏 临时进程的删除
  • 仅将 pandas df 的前 N ​​行写入 csv

    如何仅将前 N 行或从 P 到 Q 行从 pandas 数据帧写入 csv 而不首先对 df 进行子集化 由于内存问题 我无法对要导出的数据进行子集化 我正在考虑一个逐行写入 csv 的函数 谢谢 Use head https pandas
  • 如何使用基于时间的触发器每小时运行一个脚本,仅在工作日的整点运行?

    我只需要在工作日每小时运行一个 Google App Script 脚本 两者之一似乎很容易做到 但将其结合起来我不确定 每小时触发 ScriptApp newTrigger RefreshRates timeBased inTimezon
  • 使用一个 apk 安装两个应用程序

    我有 2 个应用程序 1 内容提供者 2 使用此 ContentProvider 的应用程序 我需要使用单个 apk 文件安装这 2 个应用程序 我想在 Eclipse 中同时推送这两个应用程序 如果我将另一个项目添加到一个应用程序的构建路
  • 让协程等待之前的调用

    我还没有完全掌握 Kotlin 协程 基本上我希望协程在执行之前等待任何先前的调用完成 下面的代码似乎可以工作 但它正在做我认为它正在做的事情吗 private var saveJob Job null fun save saveJob s
  • Java递归方法求阶乘返回负输出[重复]

    这个问题在这里已经有答案了 我知道这是溢出 但问题是 20 是相对较小的数字 这不应该发生 对吧 有没有更好的方法来查找大数 例如 1000 的阶乘 而不会得到这种奇怪的结果 public class RecursiveFunctionsE
  • 更新序列化器时,嵌套序列化器没有实例(many = true)

    我有 UserSerializer 和嵌套的 UserClientSerializer 我正在尝试更新已登录用户的信息 但我收到 unique together 验证错误 我有以下型号 模型 py class UserClients mod
  • 迭代字典按排序顺序返回键

    我有一个关于 python 如何处理字典中的数据的问题 假设我有一个简单的字典 其中一个数字作为键 一个数字作为值 如下所示 a 5 3 20 1 1 1 5 2 100 3 11 6 14 1 15 2 16 4 17 2 25 1 19
  • AngularJS - 关闭模态窗口

    我的内容包括 bootstrap css getbootstrap com 2 3 2 angular ui bootstrap tpls 0 10 0 min js from angular ui github io bootstrap
  • 什么是 Microsoft.Bcl.Async?

    什么是 Microsoft Bcl Async 它的用途是什么 我已经读过包装页面 https www nuget org packages Microsoft Bcl Async that 此包使 Visual Studio 2012 项
  • Express中间件修改请求

    我目前有一个正在运行的服务器 前端使用nodejs mongo express 和 W2UI W2ui 请求来自包含所有参数的记录数组 记录 名称 foo 我想编写一个中间件 在请求到达路由之前对其进行编辑和更改 您可以创建自己的中间件来处
  • 如何使用 ASP.NET Web API 生成 ATOM 和 RSS2 提要?

    需要采取哪些步骤来调整 ASP NET Web API 的默认 XML 输出以生成 ATOM 和 RSS2 提要 您将需要实现自定义 MediaTypeFormatter 您可能想查看 Filip 的博客文章用于 ASP NET WebAP
  • Bootstrap 中的旋转字形 / Font Awesome

    我试图让引导站点中的字形在悬停时旋转 除了更改颜色之外 这是我的尝试 http jsfiddle net young greedo17 88g5P http jsfiddle net young greedo17 88g5P 使用此代码 d
  • 获取 Parse Analytics 自定义仪表板

    是否可以使用 Javascript 或 REST API 从 Parse 获取应用程序分析 我想在我自己的仪表板中显示下载数量和自定义事件 不可以 您只能通过 REST API 推送 https parse com docs rest ht
  • 使用绝对定位时文本被破坏

    我有一个小挑战 我在 Stack Overflow 上没有找到任何解决方案 这就是我得到的 这就是我想要的 为了产生这个标题效果 我使用绝对位置 我什至不知道我的标题的宽度和高度 因此 使用此解决方案时 大文本会中断 My HTML div
  • Boost.Asio 段错误,不知道为什么

    这是我的 Boost Asio 项目基于示例的 SSCCE 我花了大约一个小时才找到这个错误 include
  • 在空手道 DSL 功能文件中使用模拟并独立运行

    我有 REST 服务 用不同于 Java 的语言编写 它与其他 REST 服务几乎没有依赖关系 例如正在开发和测试的服务是A 其他服务分别是B and C 我想运行系统测试A 一些测试需要B or and C在线并执行查询A 我编写了 b