2017-06-20 25 views
3

私はロボットフレームワークとPythonを初めて使用しています。私はSudsLibraryを使ってWebサービスを開発しています。私はExcelファイルからデータコンテンツを読みたい。私はそれのためのコードの下に書かれているが、ファイルから1行だけを読み取ります。ファイルからすべての行を読みたいと思っています。ロボットフレームワークのコンテンツの読み込み

Test.robot 

*** Settings *** 
Library DataReader.py 

*** Variables *** 
${file} ${CURDIR}${/}Book2.xls 
${sheet} ABC 

*** Test Cases *** 
Test data provider 
[Setup] prepare data 
Create Soap Client http://test.asmx?WSDL 
${ABC} Create Wsdl Object ABC 
:FOR ${ABC.Col1} ${ABC.Col2} ${ABC.Col3} ${ABC.Col4} ${ABC.Col5}  ${ABC.Col6} ${ABC.Col7} in @{testData} 
\ ${ABC.Col1} Set Variable ${ABC.Col1} 
\ ${ABC.Col2} Set Variable ${ABC.Col2} 
\ ${ABC.Col3} Set Variable ${ABC.Col3} 
\ ${ABC.Col4} Set Variable ${ABC.Col4} 
\ ${ABC.Col4} = convert to integer  ${ABC.Col4} 
\ ${ABC.Col5} Set Variable ${ABC.Col5} 
\ ${ABC.Col6} Set Variable  ${ABC.Col6} 
\ ${ABC.Col6}= convert to integer  ${ABC.Col6} 
\ ${ABC.Col7} Set Variable ${ABC.Col7} 
\ ${ABC.Col7}= convert to integer  ${ABC.Col7} 
\ Set Test Variable ${ABC} 
\ Call Soap Method ABC ${ABC} 
\ ${soap_response} Get Last Received 
\ Log ${soap_response} 
\ Element Text Should Be ${soap_response} 2.991880011689 


*** Keywords *** 
prepare data 
${data}= getDataFromSpreadsheet ${file} ${sheet} 
Set Test Variable ${testData}  ${data} 

DataReader.py

import xlrd 

def getDataFromSpreadsheet(fileName, sheetname) : 
workbook = xlrd.open_workbook(fileName) 
worksheet = workbook.sheet_by_name(sheetname) 
print worksheet 
rowEndIndex = worksheet.nrows - 1 
colEndIndex = worksheet.ncols - 1 
rowStartIndex = 1 
colStartIndex = 0 
testData = [] 
dataRow = [] 

curr_row = rowStartIndex 
while curr_row <= rowEndIndex: 
    cur_col = colStartIndex 
    while cur_col <= colEndIndex: 
     cell_type = worksheet.cell_type(curr_row, cur_col) 

     value = worksheet.cell_value(curr_row, cur_col) 
     dataRow.append(value) 
     cur_col+=1 
    curr_row += 1 
    # testData.append(dataRow) 
# return testData 
return dataRow 

`

+2

あなたは今までにパンダを使用することがありますか? Excelファイルのための素晴らしい機能があります。[Pandas.read_excel()](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.html) –

+0

私は現在すべての行を読むことができますが、今私はCSVで同じことをしなければならない。 –

+1

パンダにもCSVファイルを読む機能があります:[read_csv()](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html) – Xukrao

答えて

0

CSVファイルから行単位でデータ列を読み取るために、私は、Pythonコードの下に使用されます。

csvLibrary.pyここ

import csv 
class csvLibrary(object): 

def read_csv_file(self, filename): 
    '''This creates a keyword named "Read CSV File" 

    This keyword takes one argument, which is a path to a .csv file. It 
    returns a list of rows, with each row being a list of the data in 
    each column. 
    ''' 
    data = [] 
    with open(filename, 'rb') as csvfile: 
     reader = csv.reader(csvfile) 
     next(reader,None) 
     for row in reader: 
      for i in row: 
       data.append(i) 
    return data 
0

Open Excel ${CURDIR}/${EXCEL_FILE_NAME} 

${strColCount} = Get Column Count ${EXCEL_SHEET_NAME} 

Log To Console \nCols are => ${strColCount} 

${strRowCount} = Get Row Count ${EXCEL_SHEET_NAME} 

Log To Console \nRows are=> ${strRowCount} 

Set Test Variable ${ROW_ID} 3 

:FOR ${colIndex} IN RANGE 1 ${strColCount} 
    \ ${strTempColValue} Read Cell Data By Coordinates ${EXCEL_SHEET_NAME} ${colIndex} ${ROW_ID} 

変数strTempColValueが現在所望の列インデックス&所与の行の値を有することになるファイル - Excelから値を読み取るためのサンプルコードです。ここでは、この例では、我々は3

として行を与えている[注:http://navinet.github.io/robotframework-excellibrary/ExcelLibrary-KeywordDocumentation.html]

関連する問題