ReadyAPI — анализ источника данных Excel по столбцам

#excel #groovy #ready-api

#excel #groovy #готовый api

Вопрос:

В ReadyAPI источник данных Excel можно настроить и прочитать на этапе тестирования источника данных. Однако это не дает возможности читать в порядке столбцов (что я вижу).

Есть ли в ReadyAPI опция для чтения данных в порядке столбцов (вместо порядка строк)?

Если нет, есть ли библиотека groovy для excel / пример этого?

Комментарии:

1. Я не использую ReadyAPI, но в Groovy вы можете использовать Apache POI, если вы не получите ответа.

Ответ №1:

@MaxRussell Извините, что сообщаю плохие новости. Я попросил своего представителя учетной записи проконсультироваться с инженерами, чтобы узнать, есть ли способ изменить направление, в котором ReadyAPI считывает файлы EXCEL. Это ответ, который я получил… «Я спросил, и, похоже, прямо сейчас они не знают способа изменить способ чтения листа ReadyAPI. ReadyAPI рассматривает лист Excel как таблицу данных, строки как индексы, а столбцы как данные в индексе. »

Этот ответ был получен в середине сентября 2021 года и относится к ReadyAPI v3.9.2.

ОДНАКО… Я разработал некоторый заводной код, который, похоже, работает для этого…

 // IMPORT THE LIBRARIES WE NEED

import com.eviware.soapui.support.XmlHolder
import jxl.*
import jxl.write.*

// DECLARE THE VARIABLES

def myTestCase = context.testCase //myTestCase contains the test case
def counter,next,previous,size //Variables used to handle the loop and to move inside the file

Workbook workbook1 = Workbook.getWorkbook(new File("location of excel file.XLS"))  // Had an issue using XLSX, so switched back to XLS

Sheet sheet1 = workbook1.getSheet(0) //Index 0 will read the first sheet from the workbook, you can also specify the sheet name with "Sheet1"
//Sheet sheet1 = workbook1.getSheet("Sheet1")


size = sheet1.getColumns().toInteger()  // Get number of columns with data
length = sheet1.getRows().toInteger()   // get number of rows with data

def fieldArray = new String[length]

propTestStep = myTestCase.getTestStepByName("Properties") // get the Property TestStep object

counter = 1  //counter variable will eventually be the iteration number

next = (counter > size-2? 0: counter 1) //set the next value

// OBTAINING THE DATA from the spreadsheet
int i = 0

while (i < length) {
    Cell f1 = sheet1.getCell(counter,i)
    
    fieldArray[i] = f1.getContents()
    i  
}


workbook1.close() //close the file


// Apply all of the values to the properties in the test case

def numberOfProperties = myTestCase.properties.size()  // get the number of properties
def tempMap = myTestCase.propertyNames as String[];  // put all of the property names into an array

i = 0
while (i < length) {
    myTestCase.setPropertyValue(tempMap[i], fieldArray[i])
    i  
}
 

Пожалуйста, обратите внимание, что это не завершенная работа, но я загружаю 17 значений из столбца B в свойства, которые будут использоваться в качестве данных. Это должно, по крайней мере, помочь вам двигаться в правильном направлении.