使用Test Complete 11.11.1064.7的可变URL设置方法

时间:2015-10-16 12:08:35

标签: variables automated-tests testcomplete

我正在使用test complete为基于Web的应用程序创建测试套件。登录和主页的URL需要是可变的,因为我们有应用程序的开发和发布版本,因此需要为我们的测试解决这个问题。 (出于隐私原因,我在示例中的网址已经从实时网站更改)

写入测试步骤的

http://100.00.0.00/dev/testweb/#/routehome。这是不好的,因为当我们在另一个URL上运行测试时。所以我设置了一个带有项目范围的变量来存储基本URL,然后每个关键字test都有一个页面URL的变量。然后,每个关键字测试都需要一个“运行代码片段”来连接这两个关键字,以获取被测试页面的完整URL。 所以我已经建立了

Project.Variables.BaseURL = http://100.00.0.00/dev/testweb/
KeywordTests.LoginToTEST.Variables.PageURL = #routehome
KeywordTests.LoginToTEST.Variables.TestURL = Project.Variables.BaseURL + KeywordTests.LoginToTEST.Variables.PageURL

每个关键字测试都需要运行:

Execute("KeywordTests.LoginToTEST.Variables.TestURL = Project.Variables.BaseURL+KeywordTests.LoginToTEST.Variables.PageURL")

对我而言,这似乎是一种混乱的方式,但我无法找到更简洁的方法来进行此设置。有没有人有任何建议?

1 个答案:

答案 0 :(得分:1)

我将使用经过测试的页面映射对象创建名称映射方案,该对象使用项目变量作为URL属性的值。在这种情况下,您可以创建测试,指定页面的简单映射名称,而无需任何运行时计算。例如:

假设您已使用项目变量在同一主机服务器上映射了两个页面: enter image description here

页面和主机的变量按以下方式指定: enter image description here

在这种情况下,您可以使用通常的名称命名它们来处理页面:

function test()
{
  var google = Aliases.browser.pageGoogle;
  var gmail = Aliases.browser.pageGMail;

  if (google.Exists)
    Log.Message("The Google page is opened: " + Project.Variables.varGooglePage);

  if (gmail.Exists)
    Log.Message("The GMail page is opened: " + Project.Variables.varGMailPage);
}

为避免在更改主机时修改所有变量的值,您只能更改 testedHost 变量的值,并使用OnStartTest event处理程序更新值其他变量相应地:

function GeneralEvents_OnStartTest(Sender)
{
  Project.Variables.varGooglePage = "https://www." + Project.Variables.testedHost + "*";
  Project.Variables.varGMailPage = "https://mail." + Project.Variables.testedHost + "/mail/u/0/*";
}

您可以从TestComplete命令行,从外部文件中读取此处理程序中 testedHost 变量的值,使用user form从测试人员请求它等等。