我想阅读CSV文件进行数据验证。用于读取CSV文件的任何库或关键字都可以。我正在使用Robot Framework with Ride。
答案 0 :(得分: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}
答案 1 :(得分:0)
我做了类似的事情:
${content} | Get File | ${dir}/Newfolder2/random.xml
Should Contain | ${content} | ${text}
其中: $ {content},$ {dir}和$ {text}只是一些变量(名称应该是不言自明的)和 Get File and Should Contain是标准关键字(对于Get File,你必须导入OperatingSystem lib)
答案 2 :(得分:0)
我会先修复你在py脚本中编写的for循环。我遇到了完全相同的问题,我必须在列表索引中调用子集的子集(即data [0] [0]而不是data [0])。我像这样写了我的for循环:
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文件来自excel,你可以使用参数:
reader = csv.reader(csvfile, delimiter=',', dialect='excel')
以及