我正在编写一个用于生成pdf文件的包,方法是将一些数据发布到网站并从数据中检索生成的pdf。
我的问题在于单元测试。所以我试图将已知数据集发布到网站上,检索pdf并将其与我认为合适的pdf进行比较。这很好,但是pdf中有一个时间戳,这意味着第二天它不起作用。
我可以看到它有三种选择。
一个是摆脱pdf中的时间戳。从谷歌上搜索这似乎相当困难。它可能类似于pdf到图像转换,然后消隐时间戳。然后与参考文件进行比较。
选项二是创建一个模拟网站,然后我可以用它来生成模拟pdf。这个选项对我来说似乎有点奇怪 - 因为我不会测试与网站的实际连接,如果我在连接中毁了一些东西,我就不会发现错误。
三个就是检查我是否检索了一些看似是pdf的数据,然后用它来完成。这样,如果网站在生成的pdf中更改逗号,我也会解决这个问题。
所以,我想我的问题是双重的。 1:pdf对消隐方法的成像有多困难,2:从单元测试的角度来看,制作模拟网站或测试我得到类似pdf的数据是一种更好的方法。
答案 0 :(得分:1)
例如,如果时间戳位于偏移量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是否有效并且具有应该具有的内容。