【发布时间】:2018-03-15 14:19:28
【问题描述】:
我有带有许多值的 DataSource 步骤的测试用例。但我想只用 dataSource 中的几个值来执行测试。所以我选择了我将用来执行测试的那些。这在本地 Ready API 上运行良好。但是当从 Jenkins 执行相同的测试时,似乎测试是在所有行上执行的,包括未选择的行。
有什么我需要的解决方案或设置或任何建议。
谢谢,
【问题讨论】:
我有带有许多值的 DataSource 步骤的测试用例。但我想只用 dataSource 中的几个值来执行测试。所以我选择了我将用来执行测试的那些。这在本地 Ready API 上运行良好。但是当从 Jenkins 执行相同的测试时,似乎测试是在所有行上执行的,包括未选择的行。
有什么我需要的解决方案或设置或任何建议。
谢谢,
【问题讨论】:
您的问题不是特别清楚,但根据您所写的内容,我可以尝试提供帮助。
当您配置数据源时,SoapUI 将为每一行运行您的测试,因此我不确定您是如何选择子集的。如果您使用 Excel 作为源,则可以创建另一个包含子集的工作表,但您需要更新数据源以指向另一个工作表。
如果 Jenkins 没有按照您的预期运行,我会考虑确保您已正确提交更改以供 Jenkins 使用。
在我的每个数据驱动测试中,我使用行的第一列作为值来决定是否运行。我使用,真,假和停止。在我的测试中,我在数据源步骤之后立即执行了一个常规步骤。这个 groovy 脚本读取行的第一个 col,然后根据值决定要做什么。
def runTest = context.expand( '${DataSource#runTest}' );
def testNumber = context.expand( '${SiteDataSource#testNumber}' );
if (runTest.toUpperCase().equals("FALSE")) {
log.info("Test Number ${testNumber} has been disabled. Jumping to next test..");
testRunner.gotoStepByName( "Scenario End - Groovy Script");
} else if (runTest.toUpperCase().equals("TRUE")) {
log.info("Running this scenario....");
} else if (runTest.toUpperCase().equals("STOP")) {
log.info("Stopping testing at this row ${testNumber}.....");
testRunner.gotoStepByName( "Test Ends - Groovy Script");
}
所以,如果是真的,我什么都不做,因为下一步是我测试中真正的第一步。
如果为 false,我会直接跳到数据源循环之前的测试步骤的末尾,因为我希望测试循环返回并查看是否需要运行下一个。
如果停止,则跳到测试的最后一步,即数据源循环步骤之后。
'Scenario End' 和 'Test Ends' groovy 脚本只包含一条日志信息消息。
【讨论】: