#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 в свойства, которые будут использоваться в качестве данных. Это должно, по крайней мере, помочь вам двигаться в правильном направлении.