Groovy 解释这一行testRunner.testCase.getTestStepByName

Groovy 解释这一行testRunner.testCase.getTestStepByName,groovy,soapui,Groovy,Soapui,我是groovy新手,我不能理解testRunner和testCase到底是什么?我知道我们为什么要用它们,但它们是如何在这里工作的 def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context) import java.lang.* import java.io.* def ac,dc,class1,cn,dd,fn,not BufferedReader br= new BufferedReader (new File

我是groovy新手,我不能理解testRunner和testCase到底是什么?我知道我们为什么要用它们,但它们是如何在这里工作的

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
import java.lang.*
import java.io.*
def ac,dc,class1,cn,dd,fn,not
BufferedReader br= new BufferedReader (new FileReader (new File("C:\\Users\\Administrator\\Desktop\\data1.csv")))
def rows = br.readLines()
def rowSize = rows.size()
testRunner.testCase.getTestStepByName("MyProperties").setPropertyValue("rows",rowSize.toString())
def i = Integer.parseInt(testRunner.testCase.getTestStepByName("MyProperties").getPropertyValue("count"))
if (i<rowSize)
{
      String []row= rows[i].split(",")
      dc=row[1]
      ac=row[2]
      class1=row[3]
      cn=row[4]
      dd=row[5]
      not=row[6]
testRunner.testCase.getTestStepByName("MyProperties").setPropertyValue("dc",dc)
testRunner.testCase.getTestStepByName("MyProperties").setPropertyValue("ac",ac)
testRunner.testCase.getTestStepByName("MyProperties").setPropertyValue("class1",class1)
testRunner.testCase.getTestStepByName("MyProperties").setPropertyValue("cn",cn)
testRunner.testCase.getTestStepByName("MyProperties").setPropertyValue("dd",dd)
testRunner.testCase.getTestStepByName("MyProperties").setPropertyValue("not",not)
def groovyUtils=new com.eviware.soapui.support.groovyUtils(上下文)
导入java.lang*
导入java.io*
def ac、dc、1级、cn、dd、fn、非
BufferedReader br=new BufferedReader(新文件阅读器(新文件(“C:\\Users\\Administrator\\Desktop\\data1.csv”))
def rows=br.readLines()
def rowSize=rows.size()
testRunner.testCase.getTestStepByName(“MyProperties”).setPropertyValue(“行”,rowSize.toString())
def i=Integer.parseInt(testRunner.testCase.getTestStepByName(“MyProperties”).getPropertyValue(“count”))

如果(i
testRunner
是一个特殊的对象,它将
SOAPUI
放在上下文中,以提供访问与测试执行直接相关的不同属性的能力。例如,当您还请求访问
testCase
属性时。在这种情况下,
testCase
是一个当前保存测试对象的属性安宁安可以让你和他们“玩”在一起。总之,所有这些东西都解释得很清楚

除了@tim_yates对代码的注释外,还可以考虑使用变量来保持代码的干净性和可读性,而不是一直使用getter访问相同的代码,事实上,您的代码可以重写为:

def ac,dc,class1,cn,dd,fn,not

def rows = new File("C:\\Users\\Administrator\\Desktop\\data1.csv").withReader{ it.readLines() }
def rowSize = rows.size()

def myProps = testRunner.testCase.getTestStepByName("MyProperties")

myProps.setPropertyValue("rows",rowSize.toString())

def i = Integer.parseInt(myProps.getPropertyValue("count"))

if (i<rowSize)
{
    String [] row= rows[i].split(",")
    // Note that array are 0-based index and your accessing directly
    // the second position
    dc=row[1]
    ac=row[2]
    class1=row[3]
    cn=row[4]
    dd=row[5]
    not=row[6]
    myProps.setPropertyValue("dc",dc)
    myProps.setPropertyValue("ac",ac)
    myProps.setPropertyValue("class1",class1)
    myProps.setPropertyValue("cn",cn)
    myProps.setPropertyValue("dd",dd)
    myProps.setPropertyValue("not",not)
}
def ac、dc、1级、cn、dd、fn、非
def rows=新文件(“C:\\Users\\Administrator\\Desktop\\data1.csv”)。带读卡器{it.readLines()}
def rowSize=rows.size()
def myProps=testRunner.testCase.getTestStepByName(“MyProperties”)
myProps.setPropertyValue(“行”,rowSize.toString())
def i=Integer.parseInt(myProps.getPropertyValue(“计数”))

如果(i
testRunner
是一个特殊的对象,它将
SOAPUI
放在上下文中,以提供访问与测试执行直接相关的不同属性的能力。例如,当您还请求访问
testCase
属性时。在这种情况下,
testCase
是一个当前保存测试对象的属性安宁安可以让你和他们“玩”在一起。总之,所有这些东西都解释得很清楚

除了@tim_yates对代码的注释外,还可以考虑使用变量来保持代码的干净性和可读性,而不是一直使用getter访问相同的代码,事实上,您的代码可以重写为:

def ac,dc,class1,cn,dd,fn,not

def rows = new File("C:\\Users\\Administrator\\Desktop\\data1.csv").withReader{ it.readLines() }
def rowSize = rows.size()

def myProps = testRunner.testCase.getTestStepByName("MyProperties")

myProps.setPropertyValue("rows",rowSize.toString())

def i = Integer.parseInt(myProps.getPropertyValue("count"))

if (i<rowSize)
{
    String [] row= rows[i].split(",")
    // Note that array are 0-based index and your accessing directly
    // the second position
    dc=row[1]
    ac=row[2]
    class1=row[3]
    cn=row[4]
    dd=row[5]
    not=row[6]
    myProps.setPropertyValue("dc",dc)
    myProps.setPropertyValue("ac",ac)
    myProps.setPropertyValue("class1",class1)
    myProps.setPropertyValue("cn",cn)
    myProps.setPropertyValue("dd",dd)
    myProps.setPropertyValue("not",not)
}
def ac、dc、1级、cn、dd、fn、非
def rows=新文件(“C:\\Users\\Administrator\\Desktop\\data1.csv”)。带读卡器{it.readLines()}
def rowSize=rows.size()
def myProps=testRunner.testCase.getTestStepByName(“MyProperties”)
myProps.setPropertyValue(“行”,rowSize.toString())
def i=Integer.parseInt(myProps.getPropertyValue(“计数”))

如果(我看过了吗?另外,您不需要导入
java.lang.
java.io.*
,您也永远不会关闭
BufferedReader
…尝试:
def rows=新文件(“C:\\Users\\Administrator\\Desktop\\data1.csv”)。使用reader{it.readLines()}
…这将为您关闭它,并将行返回到
变量中感谢tim_yates..的帮助..您查看了吗?另外,您不需要导入
java.lang.
java.io.*
此外,您永远不会关闭
BufferedReader
…尝试:
def rows=新文件(“C:\\Users\\Administrator\\Desktop\\data1.csv”)。使用Reader{it.readLines()}
…将为您关闭它,并将行返回到
变量中。感谢tim_yates..的帮助。。