Skip to main content

Framework for test development

Project description

============
Installation
============

::

pip install noseapp


==========
Extensions
==========

* `noseapp_daemon https://pypi.python.org/pypi/noseapp_daemon`_
* `noseapp_requests https://pypi.python.org/pypi/noseapp_requests`_
* noseapp_selenium - coming soon `alpha https://github.com/noseapp/noseapp_selenium`_
* noseapp_alchemy - coming soon `alpha https://github.com/noseapp/noseapp_alchemy`_


===========
Quick start
===========

app.py::

from random import randint

from noseapp import NoseApp

class ExampleExtesion(object):

name = 'rand'

def __init__(self, a, b):
self._a = a
self._b = b

def get_random(self):
return randint(self._a, self._b)

class MyTestApplication(NoseApp):

def initialize(self):
self.setup_example_ex()
self.setup_case_settings()

def setup_example_ex(self):
self.shared_extension(
cls=ExampleExtesion,
args=(1, 1000),
)

def setup_case_settings():
settings = {
'interactiv_mode': True # may be False :)
}

self.shared_data('settings', settings)


def create_app(config=None, argv=None, plugins=None):
return MyTestApplication(
config=config, argv=argv, plugins=plugins,
)

# create your app plagin
#
# from noseapp import AppPlugin
#
# class MyAppPlugin(AppPlugin):
#
# name = 'my-app-plugin'
#
# def ...(self):
# self.app....
#
# app = create_app(plugins=[MyAppPlugin()], argv=['--with-my-app-plugin'])


# use config module for configuration in your application
#
# app = create_app(config='etc.base')
# or
# app = create_app(config='/home/user/projects/example/etc/base.py')
#
# use config property inside application class


example_suite.py::

from noseapp import Suite
from noseapp import TestCase
from noseapp.case import step
from noseapp import ScreenPlayCase


suite = Suite(__name__, require=['rand', 'settings'])


# create your suite class and use default require
#
# class MySuite(Suite):
# DEFAULT_REQUIRE = ['settings']


@suite.register
class BasicExampleCase(TestCase):

rand = None # from MyTestApplication.setup_example_ex

def test(self):
rand_int = self.rend.get_random()
self.assertGreater(rand_int, 0)


@suite.register
class StepByStepCase(ScreenPlayCase):

settings = None # from MyTestApplication.setup_case_settings

def setUp(self):
self.USE_PROMPT = self.settings['interactive_mode']

@step(1, 'step description')
def step_one(self):
rand_int = self.rend.get_random()
self.assertGreater(rand_int, 0)

@step(2, 'description')
def ...



=====================
Usage noseapp runners
=====================

With multiprocessing:
* processes:
noseapp-manage run myproject.app:create_app --app-processes 2 (one suite === one process)

* processes and threads:
noseapp-manage run myproject.app:create_app --app-processes 4 --threads 2 (one suite == one process, one test == one thread)

* threads only:
noseapp-manage run myproject.app:create_app --threads 2 (one suite == one thread)


With gevent:
* noseapp-manage run myproject.app:create_app --gevent 4 (one suite == one greenlet)
* noseapp-manage run myproject.app:create_app --gevent 4 --greenlets 2 (one suite == one greenlet, one test == one greenlet)


============================
Creating your own extensions
============================

You will can create extensions for nose app as independent library. Usage redirect imports from noseapp.ext

Example::

# from your lib
from noseapp_my_ext import Extension
# With redirect import
from noseapp.ext.my_ext import Extension

Good luck and easy testing!

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

noseapp-1.0.6.tar.gz (21.5 kB view details)

Uploaded Source

File details

Details for the file noseapp-1.0.6.tar.gz.

File metadata

  • Download URL: noseapp-1.0.6.tar.gz
  • Upload date:
  • Size: 21.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for noseapp-1.0.6.tar.gz
Algorithm Hash digest
SHA256 229403bbdb902c0ae7d4664d2f59818345005aec6f5947c29b36e8fac7956f21
MD5 04d7c58f3273219c42b890d42a596c40
BLAKE2b-256 0be4adb014f01bba499a4025eb8dd281eb2744fa6716d7b1f931351d669d2961

See more details on using hashes here.

Supported by

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