mongodb - 使用空手道自动测试 MongoDB 的正确方法
问题描述
我正在构建一个自动化的 API 测试平台,并且我选择了空手道来完成这项工作。太糟糕了,它的引擎是为 Java 生态系统编写的,社区对 mongoDB 技术的支持不如 NodeJS 强大
因为我需要在 QA 环境中播种/清理数据库来执行测试,但我只有一个用 NodeJS 和一个特定库制作的播种脚本,所以现在我有两个机会
继续使用 NodeJS 初始化脚本,在运行空手道测试之前填充我的数据库
使用 Java 种子库,该库可以从文件(例如 JSON)或 DB 转储中加载夹具,并在每个功能之前使用 JUnit 挂钩执行种子
这两种选择都应该使开发人员/质量保证人员能够构建多个夹具并选择哪个适合于一组特定的功能测试。例如,在场景 #1 中,我可以编写一个 sh 脚本
npm run seed
mvn clean test
但是它缺乏 qa 对要加载哪些数据的控制(除非您没有在这个 shell 脚本中指定它,这意味着必须经常更新并且必须“知道”实现了哪些功能以及何时运行它们)。另一个缺点是 CI 服务器必须安装 nodeJS 并且管道配置必须知道它,并且 CI 服务器上不应该安装很多工具
有什么建议吗?谢谢
解决方案
由于 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 请求 :)
推荐阅读
- asp.net-core - 通过 Azure 函数注入 DbContext 时无法访问已处置的对象
- html - CSS @keyframes 或 SMIL,动画选择哪一个?
- mysql - 如何计算具有特定值的行(ID)并排除 MySQL 中相同 ID 是否具有其他值?
- javafx - jfx:build-jar 工作正常 jfx:native 某些功能不起作用,如何调试 exe?
- r - 模拟彼此二次相关的数据 (X,Y)
- outsystems - 动态返回实体属性
- arrays - 在嵌套对象中排序和显示数据 - laravel
- spring-boot - JPA 分别在一列中搜索多个单词
- azure-devops - 将包推送到内部 Azure Dev Ops 包源时的身份验证问题
- python - 将整数数组转换为二进制表示矩阵