我正在尝试获取每个测试用例的屏幕快照,并将其导出到具有名称的屏幕快照目录中。
我正在使用:
testName = RunConfiguration.getExecutionSourceName().toString()
,但这仅包含测试套件的名称,而不包含测试用例的名称。
WebUI.takeScreenshot('path'+testName+'.png')
如何引用测试用例名称而不是测试套件名称?
谢谢。
编辑:我正在截屏的代码当前位于测试套件中的“ TearDownTestCase”方法中。
答案 0 :(得分:0)
您可以使用RunConfiguration.getExecutionSource()
来获取正在运行的测试用例的完整路径。
然后您可以根据需要进行处理。例如,要获取测试用例名称,您可以执行以下操作
RunConfiguration.getExecutionSource().toString().substring(RunConfiguration.getExecutionSource().toString().lastIndexOf("\\")+1)
说明:
.getExecutionSource()
方法将为您提供测试用例的完整路径,类似于C:\users\user.name\Katalon Studio\Test Cases\Test Case Name.tc
(可能有所不同)。
由于只需要最后一部分,因此可以使用Groovy将该字符串剪切为所需的内容。因此,我在\
(+ 1,因为我也想剪切反斜杠)之前,在最后一个lastIndexOf
(即Test Case Name.tc
正在做的地方)处剪切字符串。 )。
然后,.substring()
方法将给我剪切后剩下的东西。
答案 1 :(得分:0)
好的,所以我在@Mate Mrse的帮助下弄清楚了。在运行测试套件时,运行.getExecutionSource()方法将为我返回测试套件名称。但是我需要返回测试用例的名称。
我首先创建了一个测试监听器,并将其添加到“ @BeforeTestCase”中:
class TestCaseName {
@BeforeTestCase
def sampleBeforeTestCase(TestCaseContext testCaseContext) {
String testCaseId = testCaseContext.getTestCaseId()
}
}
这将返回路径:
../Katalon Studio/Test Cases/Test Case Name
然后我使用.substring()方法将测试用例名称存储为字符串
class TestCaseName {
@BeforeTestCase
def sampleBeforeTestCase(TestCaseContext testCaseContext) {
String testCaseId = testCaseContext.getTestCaseId()
GlobalVariable.testCaseName = testCaseId.substring((testCaseId.lastIndexOf("/").toInteger()) + 1)
}
}
谢谢@Mate Mrse