Parameters UFT如何在不同的测试用例中为相同的操作传递不同的数据表

Parameters UFT如何在不同的测试用例中为相同的操作传递不同的数据表,parameters,datatable,qtp,Parameters,Datatable,Qtp,如何在不同的测试用例中为相同的操作传递不同的数据表 我有三个动作和两个测试用例,它们以不同的方式调用这些动作 TC 1调用操作1和操作2 TC 2使用操作1的不同数据调用操作1和操作3 我知道我们可以通过操作调用属性传递不同的参数,但是如果我们使用数据表,我们怎么能做同样的事情呢 提前感谢您的任何意见 所有三个动作都保存为单独的脚本 这就是我们实现应用程序自动化的方法 我们正试图从ALM驱动自动化,因此将ALM参数映射为UFT参数 我们正在为可恢复性创建模块化脚本,可恢复性由功能定义。如果在多

如何在不同的测试用例中为相同的操作传递不同的数据表

我有三个动作和两个测试用例,它们以不同的方式调用这些动作

TC 1调用操作1和操作2

TC 2使用操作1的不同数据调用操作1和操作3

我知道我们可以通过操作调用属性传递不同的参数,但是如果我们使用数据表,我们怎么能做同样的事情呢

提前感谢您的任何意见


所有三个动作都保存为单独的脚本

这就是我们实现应用程序自动化的方法

  • 我们正试图从ALM驱动自动化,因此将ALM参数映射为UFT参数

  • 我们正在为可恢复性创建模块化脚本,可恢复性由功能定义。如果在多个测试用例中使用了相同的功能,我们通过使用变量来区分步骤。 例如:测试用例有一个要运行的进程。我们可以使用先前创建的模板,也可以创建新模板来启动流程。 创建和使用模板最初遵循不同的步骤,但随后经过相同的验证。我们也有单独的手动案例。因为只有两个步骤是不同的,所以我们定义了使用IF语句区分这些步骤的变量。所以,如果变量的值为1,它将创建模板,否则将运行现有模板

  • 测试用例1-创建新模板-使用调用期间定义的参数调用模块

    运行操作“Action1[Module_1]”,oneIteration,“创建新模板”、“参数_1”、“参数_2” 运行操作“Action1[Module_2]”,一次迭代

    测试用例2-使用现有模板-使用调用期间定义的参数调用模块

    运行操作“Action1[Module_1]”,oneIteration,“使用现有模板”、“参数_3”、“参数_4” 运行操作“Action1[Module_3]”,一次迭代,“Parameter_5”、“Parameter_6”、“Parameter_7”

  • 我们正在尽量减少数据表的使用。然而,在某些情况下,无法避免使用数据表。例如:多个表单,用户必须反复添加具有相同字段的多个表单。这些是使用数据表中每个表单的数据集处理的。但是,使用此模块的案例不同,每个案例必须有不同的数据表。我如何实现它?目前,由于我使用模块中的本地数据表,我无法将其用于不同的测试用例。是否有方法使用测试用例的本地数据表,然后将值传递给模块
  • 即使有办法,也有局限性,因为上面提到的“添加表单”只是大型功能的一部分。因此,如果我们要针对数据表中的数据集数量对模块进行迭代,我们只需要在其中包含一部分代码


    不确定我是否正确地解释了它,但如果您无法理解,请务必让我知道,我将尝试更好地解释它

    好的,因此听起来您正在尝试做一些类似于我所做的事情。。。我应该补充说,这不是一个理想的解决方案,但对于我发现自己所处的情况,它是有效的

    因此,我假设
    模块1
    模块2
    模块3
    从技术上讲都是QTP测试,您永远不会运行
    Test_1
    Test_2
    也是您运行(!)的QTP测试-包括您上面提到的
    RunAction
    调用,以及该测试的任何其他定制代码。那很好

    注意:您不需要在任何“模块”的数据表中的任何位置拥有任何数据

    相反,在每个“模块”中定义每个可重用操作以获取输入参数。然后将这些参数的数据保存在
    Test_1
    Test_2
    等的数据表中,每个本地(操作)数据表中的每个测试都有对应于该测试操作中调用的可重用操作的参数的列

    然后调用可重用操作:

    RunAction "Action1 [Module1]", oneIteration, 
        dataTable.Value("someParam", dtLocalSheet), 
        dataTable.Value("someOtherParam", dtLocalSheet)
    
    请注意,重要的是要理解-当使用对现有操作的调用时,DataTable(dtGlobalSheet和dtLocalSheet)引用的是“父”测试的数据表,而不是外部操作的数据表-即使对于外部代码-实际上,您调用的“模块”的数据表不存在)

    如果您需要使用不同的数据运行
    Test_1
    Test_2
    等,请选择: 1.只需将行添加到测试中的数据表中,或者。。。 2.创建
    default.xls
    (测试中的一个,而不是“ReusableActions”)的副本,并根据需要在Excel中编辑-然后在每次运行之前,在default.xls上复制所需的数据xls,然后再运行测试


    更好的是,如果你使用QC/ALM进行测试管理,在Google上搜索“使用QC/ALM进行业务流程测试”和QC/ALM的“业务组件”——我正试图让我现在的雇主走上这条路。上面描述的是一个“黑客”为了实现使用BPT可以更清晰地完成的任务……

    Action1、Action2和Action3的定义在哪里?您如何调用它们?您是否在3个操作的定义中定义了输入参数,或者只是参考了本地数据表?我在最初的帖子中尝试过对此进行解释。如果您理解它有困难,请告诉我否我不能完全确定我理解正确,但是…如果你需要调用一个外部操作,并且你需要为每个测试用例更改该外部操作的数据表,那么你不能在外部操作的模块中有一个与default.XLS格式相同的额外XLS,并且,从父测试用例中,在default.XLS之前复制这个XLS吗调用外部操作?我应该补充,我已经有一段时间没有使用QTP与QC/ALM集成了,所以我不知道这些XLS文件将存储在哪里,所以…是的,这正是我要说的。那么有没有复制数据的方法