首页 > 解决方案 > 使用空手道自动测试 MongoDB 的正确方法

问题描述

我正在构建一个自动化的 API 测试平台,并且我选择了空手道来完成这项工作。太糟糕了,它的引擎是为 Java 生态系统编写的,社区对 mongoDB 技术的支持不如 NodeJS 强大

因为我需要在 QA 环境中播种/清理数据库来执行测试,但我只有一个用 NodeJS 和一个特定库制作的播种脚本,所以现在我有两个机会

  1. 继续使用 NodeJS 初始化脚本,在运行空手道测试之前填充我的数据库

  2. 使用 Java 种子库,该库可以从文件(例如 JSON)或 DB 转储中加载夹具,并在每个功能之前使用 JUnit 挂钩执行种子

这两种选择都应该使开发人员/质量保证人员能够构建多个夹具并选择哪个适合于一组特定的功能测试。例如,在场景 #1 中,我可以编写一个 sh 脚本

npm run seed
mvn clean test

但是它缺乏 qa 对要加载哪些数据的控制(除非您没有在这个 shell 脚本中指定它,这意味着必须经常更新并且必须“知道”实现了哪些功能以及何时运行它们)。另一个缺点是 CI 服务器必须安装 nodeJS 并且管道配置必须知道它,并且 CI 服务器上不应该安装很多工具

有什么建议吗?谢谢

标签: mongodbjunitcontinuous-integrationautomated-testskarate

解决方案


由于 Java 互操作,您可以很容易地从空手道调用操作系统命令。

* def FileUtils = Java.type('com.intuit.karate.FileUtils')
* def runtime = java.lang.Runtime.getRuntime()
* def exec = function(cmd){ return FileUtils.toString(runtime.exec(cmd).getInputStream()) }
* def result = exec('my-nodejs-cli-command')

而且您拥有所有环境切换的灵活性,例如,您可以使用变量作为exec()参数。

MongoDB没有一些通过REST调用它的方法。因为空手道恰好擅长发出 REST 请求 :)


推荐阅读