Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

342
Vistas
Caso de prueba simulado para cargar un archivo en S3

¿Cómo podemos simular la carga de archivos en S3. Intenté algo como esto.

 file_mock = mock.MagicMock(spec=File, name='FileMock') @mock.patch('storages.backends.s3boto.S3BotoStorage', FileSystemStorage) def test_post_file(self): response = self.client.post('/api/v1/file_upload/', { "status": "NEW", "amount": "250.00", "bill": file_mock })

Pero esto, a su vez, se está cargando en S3. Soy nuevo en esto. ¿Cómo se puede implementar esto sin cargar archivos en S3?

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Entonces, su enfoque general es correcto, pero debe anular el comportamiento de boto. Por lo tanto, debe crear varios parches para ello. Algo como esto probablemente funcionaría:

 """ Mock Connection class for Bucket """ class MockConnection(): def __init__(self): self.provider = 'AWS' def delete_key(self, param): pass """ Mock Connection class which is called for connecting to s3 """ class MockS3Connection(): def get_bucket(self, name, validate=False): return Bucket(MockConnection(), 'bucket') """ Mock Key class which also gets the bucket """ class MockKey(): def __init__(self, bucket): self.bucket = bucket def set_contents_from_string(self, data, headers): pass def set_acl(self, read): pass """ Mock the function which connects to S3 """ def mock_connect_s3(): return MockS3Connection() class TestUploadResource(BaseResourceTestCase): """ Test Document upload """ def setUp(self): super(TestUploadResource, self).setUp() @mock.patch('boto.connect_s3', new = mock_connect_s3) @mock.patch("boto.s3.key.Key", MockKey) def test_file_is_accepted(self): ''' Test case to check whether file is uploaded ''' name = raw_input('Document1')+'.pdf' file = open(name,'rw') # Trying to create a new file or open one """ Call the upload docs command with the file which we want to save """ response = self.client.post('some-url') """ Check whether the file is going and the response of creation is coming or not """ self.assertEqual(201, response.status_code)

Luego puede agregar varias cosas en su función como cuál sería el comportamiento esperado. Espero que esto ayude.

about 4 years ago · Santiago Trujillo Denunciar

0

La solución anterior funcionó. También tuve que burlarme del método de guardado.

 @mock.patch.object(<Model>, 'save') @mock.patch('boto.connect_s3', new=mock_connect_s3) @mock.patch("boto.s3.key.Key", MockKey) def test_post_file(self, save_mock): response = self.client.post('/api/v1/file_upload/', { "status": "NEW", "amount": "250.00", "bill": file_mock }) self.assertTrue(save_mock.called) self.assertEqual(201, response.status_code)
about 4 years ago · Santiago Trujillo Denunciar

0

Después de mucha investigación, la solución más simple que he encontrado hasta ahora es parchear setUp en el método de configuración o incluso en la parte superior de los archivos de prueba.

Ejemplo:

 from django.core.files.storage import FileSystemStorage from myapp.models import Report class TestUploadS3(TestCase): def setUp(self): ... Report.pdf_file.field.storage = FileSystemStorage() ...

De esta forma, el archivo no se carga en S3.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda