unittest pruebas integracion español python django django-rest-framework python-imaging-library

python - pruebas - PIL-El archivo enviado está vacío. Caso de prueba



testing en python (1)

Mi suposición anterior es incorrecta. Está utilizando Rest Framework con la funcionalidad multiparte (¡increíble!) Para que pueda enviar el archivo tal como está y el archivo se codificará en varias partes.

El error aquí es el siguiente:

  1. Usted abre el archivo tmp_file
  2. Usted escribe el contenido de la imagen en este archivo
  3. El archivopointer ahora está al final del documento
  4. Transfiere el documento a APIClient (), que es un contenedor de prueba simple que pasa el argumento hacia arriba a través del marco de referencia donde finalmente se codifica su llamada.
  5. La codificación llamará a tmp_file.read() . Como el puntero aún se encuentra al final del archivo, read() devolverá 0 bytes, dejándolo con un documento vacío.

Soluciones: tmp_file.seek(0) o vuelva a abrir el archivo antes de llamar a la post()

Tengo una carga de archivo que funciona perfectamente, sin embargo, quiero escribir una prueba así que hice lo siguiente ...

def test_post_ok(self): image = Image.new(''RGB'', (100, 100) tmp_file = tempfile.NamedTemporaryFile(suffix=''.jpg'') image.save(tmp_file) payload = { "name": "Test", "thumbnail_image": tmp_file } api = APIClient() api.credentials(Authorization=''Bearer '' + self.token) response = api.post(url, payload, format=''multipart'')

Sin embargo, la prueba da el error ...

<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=1024x768 at 0x108A5DCF8> {''thumbnail_image'': [u''The submitted file is empty.'']}

Supongo que no estoy haciendo esto correctamente, ¿por qué no?