Code Monkey home page Code Monkey logo

nose-mongoengine's Introduction

nose-mongoengine

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

Using pip:

pip install nose-mongoengine

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.

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

nose-mongoengine's People

Contributors

dayvson avatar mbanton avatar nikestep avatar pnpnpn avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.