Squish/Iterating Through a Table/es

From Qt Wiki
Jump to navigation Jump to search

En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh

Iterando a través de una tabla

Hay varias formas de recorrer una tabla con script de test para utilizarlo cuando se necesita verificar o tomar una decisión sobre un determinado conjunto de filas o columnas. En los siguientes ejemplos vamos a utilizar los tres métodos para verificar que no hay celdas vacías en una tabla.

Al final, el uso de cualquiera de estos tres enfoques sería simplemente:

verifyNoEmptyCells(":MyQTableWidget")<code>

== Usando la API de Qt ==

Este acercamiento usa la API de Qt para acceder al modelo directamente e iterar entre las filas y las columnas de la tabla.

def verifyNoEmptyCells(tableName):

table = waitForObject(tableName)
model = table.model()
columnCount = model.columnCount()
rowCount = model.rowCount()

for col in range(columnCount):

for row in range(rowCount):
itemText = str(model.data(model.index(row, col), Qt.DisplayRole).toString())

test.verify(itemText != "")

== Usando waitForObjectItem() ==

Usando waitForObjectItem() se puede acceder a items de un widget especifico, tales como las acciones en un menú o en este caso, las celdas de una tabla. Se necesitan dos parámetros, el primero es el nombre del objeto primario y el segundo es la identificación del elemento. Para las celdas de una tabla, que es de dos números enteros en forma de fila / columna.

def verifyNoEmptyCells(tableName):

table = waitForObject(tableName)
columnCount = table.columnCount
rowCount = table.rowCount

for col in range(columnCount):

for row in range(rowCount):
item = waitForObjectItem(tableName, str(row)+"/"str(col))

test.verify(item.text != "")

== Usando nombres reales ==
Squish ofrece dos formas de identificar los objetos en un script de tests, ya sea usando el nombre simbólico que se asigna a una entrada en el mapa del objetos, o usar el nombre real que muestra todas las propiedades y su valor esperado en una cadena de identificación. Detrás de escena, el nombre simbólico se mapea al nombre real, usando el nombre simbólico generalmente hace que el script sea más legible.

Al utilizar el nombre real para identificar las celdas, podemos cambiar los valores esperados de las propiedades y por lo tanto el acceso a las diferentes celdas de la tabla como se ve a continuación.

def verifyNoEmptyCells(tableName):

waitFor("object.exists(tableName)")
columnCount = findObject(tableName).columnCount
rowCount = findObject(tableName).rowCount
for col in range(columnCount):
for row in range(rowCount):
item = waitForObject("{column='" str(col) + "' container='" + tableName + "' row='" + str(row) + "' type='QModelIndex'}")
test.verify(item.text != "")