你如何处理django测试中的文件

时间:2017-12-05 20:40:10

标签: django testing

我有一个具有文件字段的模型,我或多或少地测试了这个模型:

def test_importing_file_and_processing(self):
    file_path = os.path.join(settings.BASE_DIR,
                             'myapp/tests/reports/test_input_file')
    report = IngestedFile(
        filename='test_file'
    )
    report.document.save('test_file', File(open(file_path)))
    report.save()
    report.do_stuff()
    self.assertStuf....

有没有“更好”的方法来测试文件?我正在测试的东西确实看起来有点hacky。

1 个答案:

答案 0 :(得分:0)

您可以使用 tempfile 模块

import tempfile

tmp_file = tempfile.NamedTemporaryFile(suffix='.pdf')

with open(tmp_file.name, 'w') as f:
    f.write('test_content')

report.document = tmp_file

或者你可以为那个

创建隔离的功能
def generate_test_file(file_format='.pdf'):

    tmp_file = tempfile.NamedTemporaryFile(suffix=file_format)

    with open(tmp_file.name, 'w') as f:
        f.write('test_content')

    return tmp_file