对RFT中的所有callScripts使用主数据池

时间:2015-01-21 12:40:17

标签: java eclipse rft

是否可以为我的所有脚本使用单个数据池?每个脚本都有一个现有的数据池,我想要的是不使用它而是使用主数据池。主数据池应包含每个脚本的所有列。

我还应该有一个主脚本作为所有脚本的调用者,所以代码应该只在主脚本中,不应该修改要调用的脚本。

例如:我有一个登录脚本,其中包含用户名和密码,然后是add_employee脚本,其中包含名字和姓氏。

  • 主数据池包含用户名,密码,名字和姓氏列。
  • 主脚本仅包含为其所有调用脚本使用指定(主)数据池的代码,以及要调用的脚本。

我尝试从下面的链接中读取代码,但我认为代码需要插入到每个(子)脚本中。我需要的是主脚本中的代码,它将影响所有要调用的脚本。 Rational Functional Tester - How can I get scripts called from a parent script to use the parent's data pool?

2 个答案:

答案 0 :(得分:0)

不太确定如何解决数据池问题,但有一种方法可以编写影响所有脚本的代码 - 使用超级助手类。

在Functional Tester中,所有脚本都有一个脚本助手超类。所有脚本助手类都是RationalTestScript的子类。使用超级助手类,脚本是超级助手类的子类,超级助手类继承自RationalTestScript。

所以你需要做的就是创建一个扩展RationalTestScript并将其用作超级帮助器类的类。测试脚本的超级帮助程序类在测试脚本的属性中设置。您可以在项目设置中设置默认的超级助手类。

有关超级助手类的更多信息:http://www.ibm.com/developerworks/rational/library/1093.html

答案 1 :(得分:0)

您可以将调用者脚本的数据池值作为脚本参数提供给被调用者。 Callee应该覆盖dpString方法,以便能够从脚本参数中读取其数据池值,以防从另一个脚本调用它。

顺便说一句,这看起来像是一个很好的博客主题!

试图总结解决方案,希望它能给你一个想法:

你需要

定义一个帮助程序超类:

public abstract class SingleDPSupport extends RationalTestScript

用一个字段来标识从另一个脚本调用一个脚本:

private static bool isCalledFromAnother = false;

提供另一个callScript方法:

protected void callMyScript(RationalTestScript script,  Object[] args)
{
    isCalledFromAnother = true;
    args = appendDp(args);//this method should append datapool values to args array with a special prefix such as "_dp_"
    callScript(script, args);
    isCalledFromAnother = false;
}

覆盖dpString以读取这些特殊参数:

public String dpString(String variableName) {
    if (isCalledFromAnother)
        return findDpStringFromArgs(getScriptArgs(), DP_ARG_NAME_START+variableName, null);

    return super.dpString(variableName);
}