运行葫芦测试时如何模拟后端交互

Posted

技术标签:

【中文标题】运行葫芦测试时如何模拟后端交互【英文标题】:How to mock backend interaction when running calabash tests 【发布时间】:2013-10-22 16:28:34 【问题描述】:

我正处于为现有应用程序集成黄瓜测试的阶段。该应用程序与后端进行大量交互。最简单的情况是用户注册。

为了使测试可重复,我不能违背(真实)后端(出于多种原因,一个无法使用相同的电子邮件注册两个用户)。

我想知道我必须使用哪些选项来模拟后端行为并提供模拟响应。对于单元测试,我知道Nocilla 和其他几个框架。集成它们当然不适用于葫芦测试。

另一种方法是运行一个真正的服务器,我可以通过葫芦测试来控制它来控制网络。但这似乎有点矫枉过正。另一种选择是在我可以通过calabash backdoor 机制控制的葫芦目标中包含模拟对象。

我怀疑这不是唯一的选择。所以我的问题是:有没有更优雅的方式来做到这一点?

【问题讨论】:

您可以尝试自动生成具有已知前缀的用户电子邮件来注册新用户。并且只要您需要,您可以使用该前缀进行搜索并立即从服务器中删除所有内容。 这不仅与电子邮件有关,还与取决于特定状态的每个后端交互有关。但是现在我们使用了一个小型 Sinatra 服务器,可以通过从葫芦步骤定义中发送 PUT 请求来配置其响应。 【参考方案1】:

由于直到今天我才收到其他反馈,我将回答我自己的问题。

我们选择了为我们的后端创建一个非常简单的模拟的方式。我们使用了 Sinatra,但是 node.js 或类似的技术会导致相同的结果。可以通过简单的 REST API 控制模拟。

在步骤定义中,我们为运行场景适当地配置了模拟后端。这有点开销,因为模拟必须随着真实后端的发展而发展,但直到今天它仍然是一个强大的解决方案。

【讨论】:

您能否进一步了解一下您是如何做到的?您是否修改了应用程序指向的测试目标的基本 URL?您是否使用某种代理来重定向流量?为了弄清楚这些东西,我绝对是在扯头发。

以上是关于运行葫芦测试时如何模拟后端交互的主要内容,如果未能解决你的问题,请参考以下文章

单元测试——使用模拟对象做交互测试

VCR.py:自动模拟 HTTP 交互,以简化和加速测试

前端和后端如何进行交互流程

是否可以通过 xcrun simctl 与克隆的 iOS 模拟器进行交互?

IOS测试与Mac文件系统交互

Webapp和后端交互检查测试