【问题标题】:How to compare two psv files through Robot framework; is it possible?如何通过Robot框架比较两个psv文件;可能吗?
【发布时间】:2014-08-05 10:45:23
【问题描述】:

我有两个 psv(管道分隔)文件,我需要按列比较数据。

如何比较这两个文件,是否可以通过 Robot 比较两个 psv 文件??

【问题讨论】:

  • “psv 文件”到底是什么意思?这可能意味着一个管道分隔的值文件、一个赞美保存文件,或者可能是其他东西。
  • 它的管道分隔值文件

标签: python selenium automated-tests delimiter robotframework


【解决方案1】:

机器人框架没有内置任何专门用于 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'

【讨论】:

  • 我建议在 Python 中使用 csv 模块。您可以使用自定义分隔符,例如管道。
  • 如果我需要比较两个csv文件,对上面的python脚本应该做哪些修改?我试过替换'|'在分隔符部分使用“,”,但似乎不起作用。它通过错误说“行包含空字节”
猜你喜欢
  • 2017-11-08
  • 2014-12-30
  • 2021-09-28
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
  • 2020-03-24
  • 1970-01-01
  • 2023-03-26
相关资源
最近更新 更多