我正在编写一个用于SOAP UI的常规脚本,该脚本读取帐号的CSV文件,然后以某种XML使用帐号。我将需要遍历大约5000个帐号,以循环进行SOAP UI测试用例。
由于该帐号只能使用一次,所以我的想法是编辑CSV文件并说该行已被使用,然后向Groovy添加逻辑以使其不再使用该行。
我已经成功读取了CSV文件并对其进行了循环,我的特定问题是我想将CSV的当前行设置为“是”(否则任何变量都可以:)。我可以附加到文件的末尾,但是我需要附加到特定的行(即循环的当前行)。
我已经尝试过诸如inputFile [rowsData] .append(“ Yes”)之类的各种东西,我觉得我已经很近了,但是还不很到位(这是我第一次使用Groovy和CSVs)
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
wrapUp = groovyUtils.getXmlHolder( "WrapUp#Request" )
import com.eviware.soapui.support.UISupport
import groovy.io.FileType
import org.apache.commons.io.FileUtils
def csvFilePath = "file.csv"
context.fileReader = new BufferedReader(new FileReader(csvFilePath))
def inputFile = new File("file.csv")
rowsData = context.fileReader.readLines()
int rowsize = rowsData.size()
for(int i =0; i < rowsize; i++)
{
rowdata = rowsData[i]
String[] data = rowdata.split(",")
// if the third column is not yes, we haven't used the data
if (data[2].toString() != "YES") {
testRunner.testCase.setPropertyValue("ACCOUNT_NUMBER",data[1])
testRunner.testCase.setPropertyValue("SORT_CODE",data[0])
// this inputs to the end of the csv, needs to go to the current row
inputFile.append("Yes")
break;
}
else
log.info "OUT OF ACCOUNT NUMBERS"
}
答案 0 :(得分:0)
您将行读入rowsData
数组变量
然后,在迭代rowsData
时,只需将YES
添加到所需的rowsData
元素即可:
for(int i =0; i < rowsize; i++)
{
...
rowsData[i]=rowsData[i]+'YES'
}
最后,您必须像这样将所有行写回到文件中:
new File(csvFilePath).setText(rowsData.join('\n'), "UTF-8")