Unittesting pdf从网站生成

时间:2015-10-26 18:25:28

标签: python unit-testing python-3.x

我正在编写一个用于生成pdf文件的包,方法是将一些数据发布到网站并从数据中检索生成的pdf。

我的问题在于单元测试。所以我试图将已知数据集发布到网站上,检索pdf并将其与我认为合适的pdf进行比较。这很好,但是pdf中有一个时间戳,这意味着第二天它不起作用。

我可以看到它有三种选择。

  • 一个是摆脱pdf中的时间戳。从谷歌上搜索这似乎相当困难。它可能类似于pdf到图像转换,然后消隐时间戳。然后与参考文件进行比较。

  • 选项二是创建一个模拟网站,然后我可以用它来生成模拟pdf。这个选项对我来说似乎有点奇怪 - 因为我不会测试与网站的实际连接,如果我在连接中毁了一些东西,我就不会发现错误。

  • 三个就是检查我是否检索了一些看似是pdf的数据,然后用它来完成。这样,如果网站在生成的pdf中更改逗号,我也会解决这个问题。

所以,我想我的问题是双重的。 1:pdf对消隐方法的成像有多困难,2:从单元测试的角度来看,制作模拟网站或测试我得到类似pdf的数据是一种更好的方法。

1 个答案:

答案 0 :(得分:1)

  • 选项4:找出时间戳在pdf中的位置,并比较
  • 之前和之后的字节

例如,如果时间戳位于偏移量11并且长度为两个字节:

with open('reference.pdf') as rf:
    reference_data = rf.read()
with open('pdf_from_website.pdf') as wf:
    website_data = wf.read()
self.assertEqual(reference_data[:11], website_data[:11])
self.assertEqual(reference_data[13:], website_data[13:])

我不熟悉pdf文件的内部,所以这可能不起作用。您可以使用diff查看差异所在并尝试。

对于你的第二个问题:最好是你可以测试返回的pdf是否有效并且具有应该具有的内容。