2016-11-09 79 views
0

enter image description here起初,我已經把幾個問題Excel工作表的響應。這與我的要求的提高有關。我試圖在Excel表格中保存響應。然而,答覆正在寫兩次。請幫助我,我滯後,以防止重複記錄寫作。如何寫現有使用Groovy腳本

import jxl.* 
import jxl.write.* 

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context) 
def holder = groovyUtils.getXmlHolder("Step2#Response") 
def request=groovyUtils.getXmlHolder("Step2#Request") 


File fr = new File("C:\\Users\\Documents\\Groovy Scripts\\response\\output.xls") 

Workbook wk = Workbook.getWorkbook(fr); 
WritableWorkbook wr = Workbook.createWorkbook(fr, wk); 

WritableSheet sheet= wr.getSheet(0); 


def r = sheet.getRows(); 

log.info "rows: ${r}" 

xPath1 = "//*:description/text()"  
xPath2 = "//*:OrderId/text()" 
xPath3 = "//*:m/text()" 

Label orderid = new Label(0,r ,request.getNodeValue(xPath2)); 
sheet.addCell(orderid); 
Label mode = new Label(1,r ,request.getNodeValue(xPath3)); 
sheet.addCell(m); 
Label description = new Label(2,r , holder.getNodeValue(xPath1)); 
sheet.addCell(description); 
Label response = new Label(3, r, context.expand('${Step2#Response}')); 
sheet.addCell(response); 

wr.write(); 

wr.close(); 

鏈接到先前的帖子:Groovy script to Read an xml file and update next step request with file contents

+0

可有人懇請幫助我如何 – user3212324

+0

你加入這行代碼來解決重複的問題。但不清楚你到底想要達到什麼目標,什麼是問題? – Rao

+0

@Rao,請在屏幕截圖中找到記錄在表單中寫入兩次。每條記錄重複兩次。上面的代碼寫在步驟2 – user3212324

回答

0
import java.io.* 
import jxl.* 
import jxl.write.* 
import java.text.SimpleDateFormat 

def f=new File("D:\\Testing\\SOAP\\GoogleMapAPI_SoapAutoFile.xls"); 
def wk= Workbook.getWorkbook(f) 
def ws=wk.getSheet("Sheet1") 
r=ws.getRows() 

def estatus 
def date = new Date() 
FileDate = new SimpleDateFormat("ddMMMyyyy_HHmmss") 
log.info FileDate.format(date) 

def f1 = new File("D:\\Testing\\SOAP\\Report\\GoogleAPIReport\\Report_"+FileDate.format(date)+".xls") 
    def wk2 = Workbook.getWorkbook(f) 
    def wk1 = Workbook.createWorkbook(f1, wk2) 
    def ws1=wk1.getSheet("Sheet1") 


for(def i=1;i<r;i++) 
{ 
    log.info "--RRRRRRRRR-------------------------------------------------" 
    log.info r 
    log.info "--IIIIIIIIIIIIIII-----------------------------------------" 
    log.info i 

    Cell c1=ws.getCell(2,i) 

    if(c1.getContents().equalsIgnoreCase("Y")) 
    { 
    Cell c2=ws.getCell(3,i) 
    log.info c2.getContents() 
    Cell c22=ws.getCell(4,i) 
    log.info c22.getContents() 
    log.info c2.getContents() 
    testRunner.testCase.testSuite.setPropertyValue("testdata",c2.getContents()) 
    testRunner.testCase.testSuite.setPropertyValue("testdata2",c22.getContents()) 
    Cell c3=ws.getCell(1,i) 
    log.info c3.getContents() 
    testRunner.runTestStepByName(c3.getContents()) 

    def assertionsList = testRunner.getTestCase().getTestStepByName(c3.getContents()).getAssertionList() 
    for(e in assertionsList){ 
    log.info "--ASSERTION NAME---------------------------------------------" 
    log.info e.getName() 
    log.info e.getToken() //gives the value of the content to search for 
    log.info e.DESCRIPTION 
    log.info e.ID 
    log.info e.LABEL 
    log.info "--ASERTION STATUS----------------------------------------------" 
    log.info e.status 
    log.info e.toString() 
    estatus=e.status 
    } 
    log.info i 

    enter code here 

log.info "--LABEL---------------------------------------------------------" 
} 
    log.info estatus 
    ws1.addCell(new Label(5, i, estatus.toString())); 
    estatus=null 

} 
wk1.write() 
wk1.close() 
log.info "DONE" 

And the Excel File have: 
[enter image description here][1] 


Now add the Testcase in SOUPUI 
[enter image description here][2] 

    [1]: https://i.stack.imgur.com/dnfgt.jpg 
    [2]: https://i.stack.imgur.com/cr9Hw.jpg 
+0

你好,歡迎來到StackOverflow。在你的代碼片段之前用一個簡短的描述來完成你的答案會更好。 –

1

你可以嘗試讀取和寫入下面的代碼。它工作得很好......你所要做的就是將你的excel表格保存爲.xls格式。

import com.eviware.soapui.support.XmlHolder 
import java.io.File 
import java.io.IOException 
import jxl.* 
import jxl.read.biff.BiffException 
import jxl.write.* 
import jxl.write.Label 
log.info("Testing Started") 
def reqOperationName = "Operation Name" 
def inputDataFileName = "FileLocation/filename.xls" 
def inputDataSheetName = "Datasheet name" 
Workbook workbook = Workbook.getWorkbook(new File(inputDataFileName)) 
Sheet sheet1 = workbook.getSheet(inputDataSheetName) 


def myList = new ArrayList<String>(); 
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context) 
String xmlResponse = reqOperationName+"#Request" 
def reqholder = groovyUtils.getXmlHolder(xmlResponse) 
try{ 
    rowcount = sheet1.getRows() 
    colcount = sheet1.getColumns() 

    for(Row in 1..rowcount-1){ 

    String reqTagName = sheet1.getCell(0,0).getContents() 

    def TagCount = reqholder["count(//*:"+reqTagName+")"] 

    if(TagCount!=0){ 
     String reqTagValue = sheet1.getCell(0,Row).getContents() 
     if(reqTagValue!=null && !reqTagValue.isEmpty() && reqTagValue!="") 
       { 
        reqholder = groovyUtils.getXmlHolder(xmlResponse) 
        log.info "extracted value : " + reqTagValue 
       reqholder.setNodeValue("//*:"+reqTagName, reqTagValue) 
       reqholder.updateProperty()   
       log.info "node value : " + reqholder.getNodeValue("//*:"+reqTagName) 
       //test the request 
       testRunner.runTestStepByName(reqOperationName) 
       reqholder = groovyUtils.getXmlHolder(reqOperationName+"#Response") 
       myList.add(reqholder.getPrettyXml().toString()) 
       log.info myList[Row-1] 
       }      
    } 

    } 
} 
catch (Exception e) {log.info(e)} 
finally{ 
    workbook.close() 
} 
Workbook existingWorkbook = Workbook.getWorkbook(new File(inputDataFileName)); 
WritableWorkbook workbookCopy = Workbook.createWorkbook(new File(inputDataFileName), existingWorkbook); 

try 
{ 
    WritableSheet sheetToEdit = workbookCopy.getSheet(inputDataSheetName); 
    WritableCell cell; 
    for (int i =1;i<myList.size();i++) 
    { 
    def resholder = groovyUtils.getXmlHolder(myList[i]) 

    resTagValue1= resholder.getNodeValue("//*:Response Field Element1") 
    Label l = new Label(2, i+1, resTagValue1.toString()); 
    cell = (WritableCell) l; 
    sheetToEdit.addCell(cell); 

    resTagValue2= resholder.getNodeValue("//*:Response Field Element2") 
    Label m = new Label(3, i+1, resTagValue2.toString()); 
    cell = (WritableCell) m; 
    sheetToEdit.addCell(cell); 

    resTagValue3= resholder.getNodeValue("//*:Response Field Element3") 
    Label n = new Label(4, i+1, resTagValue3.toString()); 
    cell = (WritableCell) n; 
    sheetToEdit.addCell(cell); 

    resTagValue4= resholder.getNodeValue("//*:Response Field Element4") 
    Label o = new Label(5, i+1, resTagValue4.toString()); 
    cell = (WritableCell) o; 
    sheetToEdit.addCell(cell); 

    } 
} 
catch (Exception e) {log.info(e)} 
finally{ 
    workbookCopy.write(); 
workbookCopy.close(); 
existingWorkbook.close(); 
} 
log.info("Testing Over") 

讓我知道它是否有效。 :)