我正在尝试为一个网站使用e2e和ProtractorJS进行一些测试。然而,我的代码正在变得一团糟。相同的代码位于不同的位置:在World对象、前后钩子文件和步骤定义文件中。不同的文件似乎没有定义好的用途:我只是在扩展它们,在World对象中放置一些可重用的部分。(例如,我将登录放在World对象中,但是我也有一个用于登录的前置钩子)。World和step文件也变得相当大。我遇到的另一个困难是网站上的一些更新是异步进行的。所有这些使得很难对测试的一般流程进行推理,也很难进行调试。我的问题是:使用Cucumber进行e2e测试的代码有哪些可能的体系结构。
更新:
这个项目已经扩大了。我必须测试通过多个网站的流量。两个前端和一个后端站点。用户可以在两个前端站点之一提交各种类型的信息。这必须由后端的站点管理员检查,然后它应该出现在两个前端站点之一。我还应该检查当用户提交信息和管理员接受/编辑信息时发送的邮件。在我看来,使用web邮件帐户和使用ProtractorJS检查这一点似乎是最简单的吗?此外,我有一个限制,即测试应该在一定的时间框架内进行。因此,我不再登录/注销每个测试的背景条件(取决于场景),也不再为每个场景刷新页面(这两个前端使用相同登录的额外困难)。
我应该如何做到这一点,有什么例子/模式吗?
我是如何开始使用Page对象模式的。但是某些逻辑,比如登录,对于每个站点都是不同的,所以我将它们放在单独的对象中。另外,我在Page对象旁边有一个缓存的Page对象。第一个委托给最后一个,但只在url或登录状态已经更改的情况下。
发布于 2016-12-08 12:57:09
我建议您阅读Page 模式,Martin在这里很好地描述了这个模式,您还可以在web上找到关于这个模式的许多信息。
对于在许多地方使用的公共函数,您可以创建一个包含它们的文件,或者创建许多公开具有共同响应性的函数的文件。
这样,您就可以保持体系结构的一致性,并正确使用SRP。
https://stackoverflow.com/questions/41037427
复制相似问题