|
|
1
41
有几种方法可以解决这个问题,但是它们都很难看,因为单元测试应该是独立的,但是文件都是关于持久的更改的。
我的单元测试不在有生产数据的系统上运行,因此在每次运行之后,简单地重置upload目录是很容易的,比如
如果在测试了模型的save方法之后您实际上不需要对该文件做任何事情,我建议您使用python的
Mock library
完全伪造
如果您需要一个真实的文件(例如,作为测试的一部分,使用外部脚本进行处理等),您可以使用类似于Mirko示例的东西,并创建一个 File object 在确保将其存储在适当的地方之后-有三种方法可以做到这一点:
编辑: 模拟对象库是python version 3.3中的新功能。对于较旧的python版本,请检查 Michael Foord's version |
|
|
2
85
Django提供了一个很好的方法-使用SimpleUploadedFile。
这是django的神奇功能之一,不会出现在文档中:)。但它是指 here . 对于Python 2
如果
你被python 2困住了,跳过
|
|
|
3
13
我通常使用doctest测试模型中的文件字段
如果需要,我还可以用测试客户机来测试上传的文件。 对于fixture,在修改fixture中的路径之后,我只需将需要的文件复制到一个测试文件夹中。 例如
在包含指向名为“audio”目录的文件字段的模型的fixture中,将“audio”:“audio/audio.wav”替换为“audio”:“audio/test/audio.wav”。
不是我想的最干净的方式,但我就是这么做的。 |
|
|
4
1
如果你只是想 创建对象 需要FileField和 不想使用此字段 然后,你可以通过任何(现有的或不存在的)相对路径,像这样:
那就可以用了。 |