LoginSignup
0
1

More than 3 years have passed since last update.

【Django】大容量ファイルをPOSTしたときのテストがしたかった【TDD】

Last updated at Posted at 2020-08-26

大容量のファイル(今回は200MBくらい)をPOSTした時に正しくバリデーションではじかれるかのテストがしたかった。
したかったんだけど、実際に200MBほどのファイルを使ってテストしようとしたらMemoryErrorって怒られちゃった。

ダミーデータみたいなのが作れる!

どうしたもんかと思ってたら、TemporaryUploadedFileってのがあるらしい。

test.py
from django.core.files.uploadedfile import TemporaryUploadedFile
from django.test import TestCase

# 中略
class TestClass(TestCase):
  def test_testfunction(self):
    form_data = {
      'upload_file': TemporaryUploadedFile("test.csv", "csv", 214958080, "utf8")
    }
    response = self.client.post('/test/path/', form_data)
    self.assertEqual(302, response.status_code, "ちゃんとリダイレクトしなかったぞ")

だいぶ端折ってるけどこんな感じにつかえるみたい。
引数3つ目で容量をb単位で指定できる。今回は200MBを少し超えるくらいの値を入れてる。
(桁は1024で変わるよ。1000じゃないことに注意。)

まとめ

めっちゃ短いけど、備忘録的な意味ではいいのかな。
ちなみに、少量データだったらInMemoryUploadedFileってのもあるらしい。

参考

https://docs.djangoproject.com/ja/3.0/_modules/django/core/files/uploadedfile/

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1