2014-02-18 7 views

ответ

6

Вы можете легко создать свою собственную библиотеку в python для чтения и записи csv-файлов. Это позволяет создавать любые ключевые слова, которые вы хотите. Вы можете просто читать и возвращать все данные или иметь ключевое слово, которое возвращает количество строк, количество столбцов или что-то еще.

Пример ключевых слов для чтения CSV файл:

Сохранить следующее определение в файле с именем csvLibrary.py. Он создает библиотеку ключевых слов с одним ключевым словом «read csv file». Pass - это путь к csv-файлу, и он вернет данные в виде списка списков.

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) 
      for row in reader: 
       data.append(row) 
     return data 

Пример теста:

Этот тест будет использовать csvLibrary, чтобы открыть файл в формате CSV, читать его, и возвращает результат в виде списка списков:

*** Settings *** 
| Library | csvLibrary.py 

*** Test cases *** 
| Reading a csv file 
| | ${data}= | read csv file | test.csv 
| | log | ${data} 
+0

Путаница в этой строке. | | $ {data} = | читать csv файл | test.csv Что такое test.csv и чтение csv-файла? Что в $ {data} достоверно? –

+1

'read csv file' - это ключевое слово, которое мы создали в библиотеке (' def read_csv_file'). Как я писал в ответ, он возвращает список списков. Таким образом, '$ {data [0]}' будет иметь первую строку данных, '$ {data [0] [0]}' - это первый столбец первой строки и т. Д. Если вы запустите код, а затем посмотрите в журнале вы точно увидите, что находится в $ {data}. –

+0

@AdnanGhaffar: похоже, вы ввели все в клетку в RIDE. Этот тест находится в формате, отделенном от трубы. Вам придется приспособиться, чтобы заставить его работать в любом формате, который вы используете. '$ {data} =' идет в одной ячейке, 'read csv file' переходит в другую,' test.csv' переходит в другую. –

0

Я сделал аналогичную вещь следующим образом:

${content} | Get File | ${dir}/Newfolder2/random.xml Should Contain | ${content} | ${text}

где: $ {content}, $ {dir} и $ {text} - это просто некоторые переменные (имена должны быть довольно понятными) и Получить файл и содержать стандартные слова (для получения файла вам нужно импортировать OperatingSystem lib)

0

Я бы исправил цикл for, который вы написали в своем скрипте py первым. я столкнулся с той же проблемой, когда мне нужно было бы назвать подмножество подмножества в моем индексе списка (т. е. данные [0] [0] вместо данных [0]). Я написал свой цикл, как это:

data = [] 
with open(filename, 'rb') as csvfile: 
    reader = csv.reader(csvfile, delimiter='<something here>') 
    for row in reader: 
     for i in row: 
      data.append(i) 
return data 

если ваш файл CSV происходит от первенствует, вы можете использовать аргумент:

reader = csv.reader(csvfile, delimiter=',', dialect='excel') 

а

Смежные вопросы