写了要在我的Python应用程序上执行的测试。测试使用Python的filecmp将两个文件(预期结果(静态保存文件))与结果(测试生成)进行比较。起初,这非常有效。然后随着时间的推移,文件停止匹配,测试开始失败。
如果我做了一个Unix diff
,确实文件不同但行内容相同。如果我忽略空格,即使用diff -w
选项,则文件匹配。
bash-4.1$ diff -w myfile.out ../expected_outcome
bash-4.1$ diff myfile.out ../expected_outcome | more
4,6c4,6
< "file": "File1",
< "name": "Myfile1",
< "created": "07/06/2015",
---
> "file": "File1",
> "name": "Myfile1",
> "created": "07/06/2015",
一位同事建议我查看我的文件的十六进制并进行比较:
outcome:
0000040: 7265 7669 7369 6165 2e65 7464 222c 200a Myfile1", .
expected outcome:
0000040: 7265 7669 7369 6165 2e65 7464 222c 0a20 Myfile1",.
=> So you can see the last byte is different between the
two files, i.e. 200a is not same as 0a20.
这就是我目前将结果写入文件的方式:
rv = self.app.get(url)
with open(output_path1, 'w') as fp:
fp.write(rv.data.decode('utf-8'))
在Python文档中,不清楚请求如何返回数据。在与同事进行一些头脑风暴之后,我们想到了解决这个问题的方法是使用json.dump来编写指定分隔符的文件。不幸的是,我一直在收到错误,如果有人可以请我更正我的语法,我将不胜感激:
rv = self.app.get(url)
with open(output_path1, 'w') as fp:
data = json.load(rv.data.decode('utf-8'))
json.dump(data, indent=4, separators=(',', ':'))
产生以下错误:
AttributeError: 'str' object has no attribute 'read'
答案 0 :(得分:0)
非常感谢您的评论,是的,我有两个拼写错误,下面是纠正后的代码:
<强>码强>
rv = self.app.get(url)
with open(output_path1, 'w') as fp:
data = json.loads(rv.data.decode('utf-8'))
json.dump(data, fp, indent=2, separators=(', ', ': '))