Squish/Iterating Through a Table/es

From Qt Wiki
Jump to navigation Jump to search

this page in:

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 != "")

<br />h2. Usando nombres reales
<br />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.
<br />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.
<br />

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 != "")