Skip to main content

A unittest test loader for Jasmine tests

Project description

Jasmine integration for unittest

This package allows you to run Jasmine unit tests fully integrated with the Python standard module unittest.

The main use case is to run JavaScript tests for Python server APIs.

Quick start

To use this module, please follow these steps:

  1. Add unittest-jasmine to the tests_require parameter to setuptools.setup().

  2. Change or add the test_loader argument to setuptools.setup() to 'unittest_jasmine.SetuptoolsLoader'.

  3. Add your Jasmine specs to your test package, and make sure the file names end with spec.js.

If your project uses npm to manage dependencies, those will be automatically updated when the tests are run using npm install.

Advanced options

Pass additional options to unittest-jasmine by modifying the test_suite parameter to setuptools.setup(); append the character '|' and then the options separated by ';':

setuptools.setup(
    . . .
    test_suite='tests|option1=value1;option2={"flag":true}',
    . . .
)

The value part of an option may be either JSON or a simple string. Anything that is not parsable as JSON is treated as a simple string. A simple string is treated as a JSON string.

The following options are recognised by unittest-jasmine:

lifecycle

A module receiving notifications about the lifecycle of suites and tests. See I need to run Python code before each test or suite for more information.

spec_regex

A regular expression used to find the spec files in the test directory.

test_directory

The directory that contains the spec files. This must be an absolute path.

Any option not in this list will be passed on to the Jasmine loadConfig method.

Common tasks

My Jasmine specs are not located in the same directory as my Python tests

Override the default path to the spec files by setting the option test_directory. This must be the absolute path to the directory containing the spec files.

My Jasmine spec files do not end with spec.js

Override the regular expression used to filter spec files from the test directory by setting the option spec_regex. This is used as a regular expression to filter the files to include.

An example value is:

setuptools.setup(
    . . .
    test_suite='tests|spec_regex=.*?-test\\.js',
    . . .
)

I need to run Python code before each test or suite

Set the option lifecycle to specify a module with functions handling the setup and teardown of tests and suites.

The functions suite_setup, suite_teardown, test_setup and test_teardown, if defined, will be called with the suite or test as parameter. The functions will be called as instance methods of the respective suites and tests.

You may copy templates for these functions from .../unittest_jasmine/_setuptools.py.

An example value is:

setuptools.setup(
    . . .
    test_suite='tests|lifecycle=test._jasmine_lifecycle',
    . . .
)

I need to load Jasmine helper files

Set the option helper to a JSON encoded list of strings. The strings are interpreted by Jasmine as paths to helper files, relative to the directory containing the spec files; they must not be absolute paths.

I have specs written in CoffeeScript

To enable running tests written in CoffeeScript, first modify the option spec_regex to ensure that it also includes .coffee files, and then make sure that one of your Jasmine helper files contains the expression require("coffee-script/register"). An example value is:

setuptools.setup(
    . . .
    test_suite='tests|spec_regex=.*?spec\\.(js|coffee);helpers=["cs.js"]',
    . . .
)

Release notes

v1.0.2 - pkg_resources fixes

  • Make sure to actually include the JavaScript runner in the package.

  • Use __name__ instead of __package__ when loading runner using pkg_resources to work on Python 3.

v1.0.1 - Python 3 fixes

  • Corrected dynamic method addition to work with Python 3.

  • Allow using release maker script on Python 3.

  • Build a universal wheel when making a release.

v1.0 - Initial Release

  • Initial release

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

unittest_jasmine-1.0.2-py3.5.egg (34.8 kB view details)

Uploaded Egg

unittest_jasmine-1.0.2-py2.py3-none-any.whl (21.2 kB view details)

Uploaded Python 2Python 3

File details

Details for the file unittest_jasmine-1.0.2-py3.5.egg.

File metadata

File hashes

Hashes for unittest_jasmine-1.0.2-py3.5.egg
Algorithm Hash digest
SHA256 8776b35f9a191cca2d5677475a49e458965efafea0ae4a881c77963a5f83f3dc
MD5 6aae25f0e1afcd832ffda26ad7ace107
BLAKE2b-256 e36f0dacab02199419340afbe1264afd4dd57ac84a70045fe8d42f490ce95482

See more details on using hashes here.

File details

Details for the file unittest_jasmine-1.0.2-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for unittest_jasmine-1.0.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 7788758bc959bdadebca4622d41abf1eecfcac67c5de84f8d1bd395c491addce
MD5 d37dabfda7edc75b3fb1d05cb55e6932
BLAKE2b-256 aa65ec5b2f40eae486b8d60aad764ba525b513aab3a412aad84fa5b9fbd11d97

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