Squish/Iterating Through a Table/es: Difference between revisions
No edit summary |
No edit summary |
||
Line 7: | Line 7: | ||
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. | 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:<br /><code>verifyNoEmptyCells( | Al final, el uso de cualquiera de estos tres enfoques sería simplemente:<br /><code>verifyNoEmptyCells(":MyQTableWidget")<code> | ||
== Usando la API de Qt == | == Usando la API de Qt == | ||
Line 15: | Line 15: | ||
</code>def verifyNoEmptyCells(tableName):<br /> table = waitForObject(tableName)<br /> model = table.model()<br /> columnCount = model.columnCount()<br /> rowCount = model.rowCount() | </code>def verifyNoEmptyCells(tableName):<br /> table = waitForObject(tableName)<br /> model = table.model()<br /> columnCount = model.columnCount()<br /> rowCount = model.rowCount() | ||
for col in range(columnCount):<br /> for row in range(rowCount):<br /> itemText = str(model.data(model.index(row, col), Qt.DisplayRole).toString())<br /> test.verify(itemText != | for col in range(columnCount):<br /> for row in range(rowCount):<br /> itemText = str(model.data(model.index(row, col), Qt.DisplayRole).toString())<br /> test.verify(itemText != "")<code> | ||
== Usando waitForObjectItem() == | == Usando waitForObjectItem() == | ||
Line 23: | Line 23: | ||
</code>def verifyNoEmptyCells(tableName):<br /> table = waitForObject(tableName)<br /> columnCount = table.columnCount<br /> rowCount = table.rowCount | </code>def verifyNoEmptyCells(tableName):<br /> table = waitForObject(tableName)<br /> columnCount = table.columnCount<br /> rowCount = table.rowCount | ||
for col in range(columnCount):<br /> for row in range(rowCount):<br /> item = waitForObjectItem(tableName, str(row)+ | for col in range(columnCount):<br /> for row in range(rowCount):<br /> item = waitForObjectItem(tableName, str(row)+"/"''str(col))<br /> test.verify(item.text != "")<code> | ||
<br />h2. Usando nombres reales | <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 />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 />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 /></code>def verifyNoEmptyCells(tableName):<br /> waitFor( | <br /></code>def verifyNoEmptyCells(tableName):<br /> waitFor("object.exists(tableName)")<br /> columnCount = findObject(tableName).columnCount<br /> rowCount = findObject(tableName).rowCount | ||
<br /> for col in range(columnCount):<br /> for row in range(rowCount):<br /> item = waitForObject( | <br /> for col in range(columnCount):<br /> for row in range(rowCount):<br /> item = waitForObject("{column='"'' str(col) + "' container='" + tableName + "' row='" + str(row) + "' type='QModelIndex'}")<br /> test.verify(item.text != "")<code> |
Revision as of 14:57, 24 February 2015
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 != "")