机器人框架没有内置任何专门用于 psv 文件的内容。但是,假设它们是文本文件,您可以在 python 中编写一个关键字来比较两个文件。 Python 有一个csv module,它可以很容易地解析此类文件,假设您的数据格式正确。
例如,创建一个名为PsvLibrary.py 的文件,其内容如下。请注意:这不是生产质量代码。它假设数据格式正确,并且每个文件的行数完全相同,并且行数并不庞大。重点是展示总体思路,而不是提供功能齐全的库:
import csv
class PsvLibrary(object):
def compare_columns(self, column_number, filea, fileb):
with open(filea, "rb") as f:
reader = csv.reader(f, delimiter="|")
filea_data = [line for line in reader]
with open(fileb, "rb") as f:
reader = csv.reader(f, delimiter="|")
fileb_data = [line for line in reader]
# for the given column, make sure the data in file a
# matches the data in file b
c = int(column_number)
for n, (row_a, row_b) in enumerate(zip(filea_data, fileb_data)):
if row_a[c] != row_b[c]:
raise Exception("line %d: '%s' != '%s'" % (n+1, row_a[c], row_b[c]))
然后您可以在这样的测试用例中使用这个库:
*** Settings ***
| Library | PsvLibrary
*** Test Cases ***
| Example of comparing columns in pipe-separated files
| | compare columns | 1 | file1.psv | file2.psv
为了测试,使用以下数据创建一个名为 file1.psv 的文件:
apple|red
orange|orange
grape|green
使用以下数据创建名为 file2.psv 的第二个文件。注意第二列的最后一行是不同的:
apple|red
orange|orange
grape|purple
如果您运行上述测试,您应该会看到以下输出:
==============================================================================
Example
==============================================================================
Example of reading a pipe-separated file | FAIL |
line 3: 'green' != 'purple'