Skip to main content

A nose plugin to facilitate the creation of automated tests that access Mongo Engine structures.

Project description

Info:

A nose plugin to facilitate the creation of automated tests that access Mongo Engine structures.

Repository:

https://github.com/mbanton/nose-mongoengine/

PyPI page:

http://pypi.python.org/pypi/nose-mongoengine/

Author:

Marcelo Anton (http://github.com/mbanton) & Maxwell Dayvson ( https://github.com/dayvson/)

https://secure.travis-ci.org/mbanton/nose-mongoengine.png?branch=master

Originally based on Mongo Nose ( http://pypi.python.org/pypi/mongonose/ ). Thanks to: Kapil Thangavelu

Installation

Using pip:

pip install nose-mongoengine

Configuration

The plugin extends the nose options with a few options. The only required options are either --mongoengine or --mongoengine-mongodb-bin to enable the plugin.

  • --mongoengine is required to enable the plugin.

  • --mongoengine-mongodb-bin Allows specifying the path to the mongod binary. If not specified the plugin will search the path for a mongodb binary. If one is not found, an error will be raised.

  • --mongoengine-clear-after-module Optionally clear data in db after every module of tests.

  • --mongoengine-clear-after-class Optionally clear data in db after every class of tests.

  • --mongoengine-mongodb-port can be optionally set, by default the plugin will utilize a a random open port on the machine.

  • --mongoengine-mongodb-scripting Enables the javascript scripting engine, off by default.

  • --mongoengine-mongodb-logpath Stores the server log at the given path, by default sent to /dev/null

  • --mongoengine-mongodb-prealloc Enables pre-allocation of databases, default is off. Modern filesystems will sparsely allocate, which can speed up test execution.

The plugin will up a instance of Mongo Db and create a empty database to use it.

Usage in your test cases

Since this is your model using mongoengine ( model_one.py ):

# encoding:utf-8 #
from mongoengine import *

class ModelOne(Document):
    int_value1 = IntField()
    int_value2 = IntField()
    boolean_value = BooleanField(required=True, default=False)

    @classmethod
    def get_model_one_by_value1(cls, v):
        return ModelOne.objects(int_value1=v)

    @classmethod
    def get_model_one_by_boolean_value(cls, v):
        return ModelOne.objects(boolean_value=v)

This is an example using the test nose + nose-mongoengine ( test_model_one.py ):

# encoding:utf-8 #
from model_one import ModelOne
from nose.tools import assert_equals

class TestModelOne(object):

    # This method run on instance of class
    @classmethod
    def setUpClass(cls):

        global o1_id, o2_id

        # Create two objects for test
        o1 = ModelOne()
        o1.int_value1 = 500
        o1.int_value2 = 123
        o1.boolean_value = True
        o1.save()

        o2 = ModelOne()
        o2.int_value1 = 500
        o2.int_value2 = 900
        o2.boolean_value = False
        o2.save()

        # Save the id of objects to match in the test
        o1_id = o1.id
        o2_id = o2.id

    # This method run on every test
    def setUp(self):
        global o1_id, o2_id
        self.o1_id = o1_id
        self.o2_id = o2_id

    def test_match_with_value1(self):
        find = ModelOne.get_model_one_by_value1(500)
        assert_equals(len(find), 2)
        assert_equals(find[0].id, self.o1_id)
        assert_equals(find[1].id, self.o2_id)

    def test_match_with_boolean_value(self):
        find = ModelOne.get_model_one_by_boolean_value(True)
        assert_equals(len(find), 1)
        assert_equals(find[0].id, self.o1_id)

Run in the command line:

$ nosetests --mongoengine test_model_one.py
..
----------------------------------------------------------------------
Ran 2 tests in 0.054s

OK

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nose-mongoengine-0.2.2.tar.gz (9.4 kB view details)

Uploaded Source

File details

Details for the file nose-mongoengine-0.2.2.tar.gz.

File metadata

File hashes

Hashes for nose-mongoengine-0.2.2.tar.gz
Algorithm Hash digest
SHA256 1558921a0a60a41b04c075bbcb8ff49e235419410d4d0bd97834a9bd6fcf92a4
MD5 4bcf83d0d05a943f4c1ccee410d228fb
BLAKE2b-256 d7dc1b2e54d2597e0294be76f0b7dbe58014210a1f29e369a4e2c5519744c2a5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page