编辑问题: 我想我错误地说了我的上一个问题,我实际上想要摆脱“单元测试”并创建自动化的模块化系统测试,这些测试相互构建以测试整个应用程序。许多部分依赖于之前的页面,如果没有先在前一页面上执行必要的步骤,则无法访问后续页面。
例如(我很抱歉我无法提供实际代码),我想登录一个应用程序,然后插入一些数据,然后显示数据已成功发送。它涉及的更多,但是,我想制作网络驱动程序部分,“模块1.x”。然后登录部分'Module 2.x'。数据部分'Module 3.x'。最后,成功部分'Module 4.x'。我希望能够达到这个目的,这样我最终可以说,“好吧,对于这个测试,我需要它有点复杂所以让我们做,IE(即模块1.4),登录(即模块2.1),添加一个名称(即模块3.1),添加一个地址(即模块3.2),添加一个电话号码(即模块3.3),然后检查是否成功(即模块4.1)。所以,我需要将所有这些串在一起。(这是非常简化的,只是我需要发生的一个例子。即使在单元测试的情况下,我也无法简单地跳到页面来检查元素是否存在而没有完成所需的先决条件信息。)问题我正在使用我创建的冗长测试,每个人都需要在更改内容时进行多次编辑,然后再乘以驱动程序的数量,在本例中为Chrome,IE,Edge和Firefox(4倍)。也许我的方法是完全错误的,但这对我来说是个新的理由,所以我们非常感谢您的建议。再次感谢您的帮助!
上一个问题: 我已经找到了许多创建单元测试的答案,但是,我无法找到关于如何顺序进行所述测试的任何建议。
我真的想进行模块化测试,可以在重复执行相同的操作时重复使用。我已经尝试了各种方法来实现这一目标,但我没有成功。目前,我有几个冗长的测试,在每个测试中重复使用大部分相同的代码,但我必须使用任何新的更改单独调整每个测试。
所以,我真的希望.py文件只包含我想要完成的特定任务的几行代码,同时重新使用已经打开的相同浏览器实例并在页面上测试的前一部分没有了。希望通过“调用”较小/模块化的测试文件来实现这一目标。
非常感谢任何帮助和/或示例。感谢您抽出时间和协助解决此问题。
恭敬地,
Billiamaire
答案 0 :(得分:0)
你真的不希望你的测试是顺序的。这破坏了单元测试的核心规则之一,它们应该能够以任何顺序运行。
您尚未发布任何代码,因此很难知道建议什么,但如果您不使用页面对象模型,我建议您开始。网络上有很多资源,但基本的是你为每个页面或小部件创建一个类。该类将包含与该页面相关的所有代码和定位器。这将有助于您所寻求的模块化方面,因为在您的脚本中,您只需实例化页面对象然后使用API。与页面对象,逻辑等交互的详细信息都通过它提供的API公开。
更改/更新很简单。如果登录页面发生更改,则编辑登录页面的页面对象,您就完成了。如果页面对象已正确实现且页面更改不严重,则很多时候您根本不需要更改脚本。
一个简单的例子就是登录页面。在该页面的登录类中,您将拥有一个采用用户名和密码的login()
方法。 login()
方法将处理用户名和密码输入相应字段并单击登录按钮等。