是否可以为我的所有脚本使用单个数据池?每个脚本都有一个现有的数据池,我想要的是不使用它而是使用主数据池。主数据池应包含每个脚本的所有列。
我还应该有一个主脚本作为所有脚本的调用者,所以代码应该只在主脚本中,不应该修改要调用的脚本。
例如:我有一个登录脚本,其中包含用户名和密码,然后是add_employee脚本,其中包含名字和姓氏。
我尝试从下面的链接中读取代码,但我认为代码需要插入到每个(子)脚本中。我需要的是主脚本中的代码,它将影响所有要调用的脚本。 Rational Functional Tester - How can I get scripts called from a parent script to use the parent's data pool?
答案 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);
}