Squish/Iterating Through a Table/es: Difference between revisions
| No edit summary | No edit summary | ||
| Line 1: | Line 1: | ||
| this page in: [[ | this page in: [[Category:Tools::Squish::Iterating_through_a_table|English]] | ||
| =Iterando a través de una tabla= | [[Category:Tools::Squish]] [[Category:Spanish]] | ||
| = 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. | 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 /> | Al final, el uso de cualquiera de estos tres enfoques sería simplemente:<br /><code>verifyNoEmptyCells(":MyQTableWidget&quot;)<code> | ||
| ==Usando la  | == Usando la API de Qt == | ||
| Este acercamiento usa la  | Este acercamiento usa la API de Qt para acceder al modelo directamente e iterar entre las filas y las columnas de la tabla. | ||
| == | </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 != "")<code> | |||
| ==Usando  | == 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. | |||
| </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)+"/&quot;''str(col))<br /> test.verify(item.text != "")<code> | |||
| <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 /></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("{column='"'' str(col) + "' container='" + tableName + "' row='" + str(row) + "' type='QModelIndex'}")<br /> test.verify(item.text != "")<code> | |||
Revision as of 11:46, 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&quot;)<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 != "")