如何在不同的测试用例中为相同的操作传递不同的数据表
我有三个动作和两个测试用例,它们以不同的方式调用这些动作。
TC 1调用操作1和操作2
TC 2使用操作1的不同数据调用操作1和操作3
我知道我们可以通过动作调用属性传递不同的参数但是如果我们使用数据表怎么能这样做呢?
提前感谢任何输入
所有三个动作都保存为单独的脚本。
所以这是我们实现应用程序自动化的方法
我们正在尝试从ALM驱动自动化,因此使用UFT参数映射ALM参数
我们正在创建可恢复性的模块化脚本,该脚本由功能定义。如果在多个测试用例中使用相同的功能,我们通过使用变量来区分步骤。 例如:测试用例有一个要运行的进程。我们可以使用先前创建的模板或创建新模板来启动该过程。 创建和使用模板最初遵循不同的步骤,但随后路由通过相同的验证。我们也有单独的手册。由于只有两个步骤不同,我们定义了使用IF语句区分它们的变量。因此,如果变量的值为1,则会创建模板,否则运行现有模板
测试用例1 - 创建新模板 - 使用调用期间定义的参数调用模块
RunAction“Action1 [Module_1]”,oneIteration,“创建新模板”,“Parameter_1”,“Parameter_2” RunAction“Action1 [Module_2]”,oneIteration,
测试用例2 - 使用现有模板 - 使用调用期间定义的参数调用模块
RunAction“Action1 [Module_1]”,oneIteration,“使用现有模板”,“Parameter_3”,“Parameter_4” RunAction“Action1 [Module_3]”,oneIteration,“Parameter_5”,“Parameter_6”,“Parameter_7”
即使有办法,也存在限制,因为上面提到的“添加形式”只是大功能的一部分。因此,如果我们要在模块中迭代数据表中的数据集数量,我们只需要在其中包含部分代码
不确定我是否正确解释,但如果您无法理解我会告诉我,我会尝试更好地解释
答案 0 :(得分:1)
好的,所以听起来你正在尝试做类似于我所做的事情......我应该补充说这不是一个理想的解决方案,但对于我发现自己的情况,它有效!
所以我假设Module_1
,Module_2
和Module_3
在技术上是您从未运行过的QTP测试。 Test_1
和Test_2
也是您要运行的QTP测试(!) - 其中包括上面提到的RunAction
次调用,以及该测试的任何其他定制代码。没关系。
注意:您不需要在任何“模块”的数据表中的任何位置包含任何数据。
相反,在每个“模块”中定义每个可重用动作以获取输入参数。然后使用每个本地(Action)数据表将这些参数的数据保存在Test_1
,Test_2
等数据表中 - 每个Test都有一些列,这些列对应于在其中调用的可重用操作的参数测试行动。
然后调用可重用操作:
RunAction "Action1 [Module1]", oneIteration,
dataTable.Value("someParam", dtLocalSheet),
dataTable.Value("someOtherParam", dtLocalSheet)
请注意,重要的是要理解 - 当使用Call to Existing操作时,DataTable(dtGlobalSheet和dtLocalSheet)引用“父”测试的内容,而不是外部操作的内容 - 即使对于外部代码 - 也是有效的,你调用的“模块”的数据表不存在)
如果您需要使用不同的数据运行Test_1
或Test_2
等,请执行以下任一操作:
1.只需在测试中的数据表中添加行,或者......
2.创建default.xls
的副本(测试中的那个,而不是“ReusableActions”,并在适当的时候在Excel中编辑) - 然后在每次运行之前,在运行测试之前,将所需数据xls复制到default.xls上。
更好的是,如果您正在使用QC / ALM进行测试管理,请使用Google搜索“使用QC / ALM进行业务流程测试” - 以及针对QC / ALM的“业务组件” - 我正试图了解当前情况雇主走这条路。上面描述的是使用BPT实现可以做得更干净的“黑客”....