Différents types de données d'entrée entre le fichier-cadre de robot et le python
-
20-12-2019 - |
Question
J'écris Excel Bibliothèque pour mes propres tests.
-
bibliothèque python originale 'readexcel.py':
from xlrd import open_workbook, XL_CELL_TEXT class Read_Excel: def __init__(self,excel_file): self.excel_file = excel_file self.book = open_workbook(self.excel_file) self.sheet1_name = self.book.sheet_names() def Take_Sheet_Name(self,name): self.name = name return self.name def Cell_Value(self,row_index,col_index): self.row_index = row_index self.col_index = col_index sheet = self.book.sheet_by_name(self.name) cell_value = sheet.cell(self.row_index,self.col_index).value return cell_value
Exécuter un exemple pour vérifier si ce programme peut obtenir la valeur de la cellule (0,1) via Eclipse ou non?
y = Read_Excel('simple.xlsx')
y.Take_Sheet_Name('name1')
print y.Cell_Value(0,1)
Result: 11 --> this number is the actual value on cell(0,1)
Copiez ce fichier Python sur le dossier Python Bibliothèque / Site-Package et renommer à 'Readexcel1.py' Ensuite, écrivez la base de cas de test sur la bibliothèque Readexcel1.py
*** Settings ***
Documentation This is the resource file for Google test suite.
Library Selenium2Library
Library ReadExcel1 C:\\Automation_project\\Robot_framework\\Testing\\Check_activity\\simple.xlsx
*** Test Cases ***
Check Library
Take Sheet Name name1 --> pass
Cell Value 0 1 --> failed
Le journal du journal est ci-dessous:
The list indices must be integers, not unicode
Donc, je pense que c'est en raison de l'entrée '0 1' à la ligne de commande de la cellule la ligne de commande est une chaîne, donc je les force à entier de type ineexcel1.py
self.row_index = int(row_index)
self.col_index = int(col_index)
Cela résout mon problème.
Mais je me demande pourquoi nous n'avons pas besoin de forcer le changement de type dans l'original Readexcel.py, et Python peut comprendre l'entrée '0 1' est le numéro. Mais dans Readexcel1.py, Robot comprend '0 1' est une chaîne et nous devons forcer le changement de type pour 'Row_index, Col_index'?
Aidez-moi s'il vous plaît faire ce problème clairement.
merci.
La solution
Par défaut, RF transmettra ces arguments en tant que chaîne 0 et String 1. Si vous souhaitez transmettre ceux-ci comme entier 0 et entier 1, puis utilisez $ {0} et $ {1}
voir http://robotframework.org/robotframework/latest/robotframeworkUide.html # nombre-variables