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

226
Vistas
¿Cómo burlarse de mongodb para las pruebas unitarias de python?

Estoy usando el módulo mock para Python 2.7 para burlarme de mis otras funciones y usando

unittest para escribir pruebas unitarias.

Me pregunto si burlarse de MongoDB es diferente a usar la funcionalidad simulada ( mock.patch una función que se está llamando?) ¿O necesito usar otro paquete diferente para ese propósito?

No creo que quiera ejecutar una instancia de prueba de mongodb. Todo lo que quiero es algunos datos de tempo y poder llamar a la funcionalidad de pymongo . Estoy un poco perdido pensando si hay alguna manera de escribir un simulacro para un módulo (como pymongo ), o cualquier cosa que se pueda lograr con un módulo mock .

Así que agradezco si pudiera proporcionar un ejemplo o tutorial sobre esto.

Código para probar

 from pymongo import MongoClient monog_url = 'mongodb://localhost:27017' client = MongoClient(monog_url) db = client.db class Dao(object): def __init__(self): pass def save(self, user): db_doc = { 'name': user.name, 'email': user.email } db.users.save(db_doc) def getbyname(self, user): db_doc = { 'name': user.name, } return db.users.find(db_doc)

Para probar esto, ¡realmente no quiero un mongodb de prueba en funcionamiento! Pero también, creo que no quiero burlarme de db.userssave y db.users.find porque quiero poder recuperar los datos que guardé y asegurarme de que estén en la base de datos. Creo que necesito crear algunos accesorios según los modelos que tengo en la memoria y trabajar con ellos. ¿Necesito una herramienta externa para hacerlo?

Estoy pensando en mantener algunos datos falsos como este, pero no sé cómo manejarlos adecuadamente.

 users = { {'name' : 'Kelly', 'email' : 'kelly@gmail.com'}, {'name': 'Sam', 'email': 'sam@gmail.com'} }
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Recomiendo usar mongomock para burlarse de mongodb. Es básicamente un mongodb en memoria con interfaz pymongo y está hecho específicamente para este propósito.

https://github.com/mongomock/mongomock

over 4 years ago · Santiago Trujillo Denunciar

0

También puede hacer esto si solo está haciendo algo simple y realmente no necesita recuperar por campo.

 @mock.patch("pymongo.collection.Collection.find") def test_name(self, mock_find): mock_find.return_value = {'name' : 'Kelly', 'email' : 'kelly@gmail.com'} # rest of test
over 4 years ago · Santiago Trujillo Denunciar

0

Ciertamente puede burlarse de PyMongo, pero recomiendo burlarse del propio servidor MongoDB. He escrito un emulador de Python puro para MongoDB que puede controlar por completo, que responde a los mensajes del Protocolo de cable de MongoDB como usted elija:

http://mockupdb.readthedocs.io/tutorial.html

Aquí hay un ejemplo del uso de MockupDB con una aplicación de Python:

https://emptysqua.re/blog/test-mongodb-failures-mockupdb/

Requiere un conocimiento profundo del protocolo de conexión de MongoDB, pero de todos modos es una habilidad útil para adquirir.

over 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