Python envjasmine wrapper ========================= This is a thin python wrapper around the envjasmine_ JavaScript testing framework. .. contents:: Installation ------------ You can install pyenvjasmine using pip_ or easy_install_:: pip install pyenvjasmine :: easy_install pyenvjasmine Or you can grab the latest sources and install it from there:: python setup.py install Also, you can use it directly from the sources directory, in *development mode* (useful if you want to contribute to the project):: python setup.py develop .. note:: More about the *development mode* here: https://packaging.python.org/en/latest/distributing.html#working-in-development-mode Running pyenvjasmine tests -------------------------- To run the tests on this code here (as opposed to *your* JavaScript code you want to test), install pyenvjasmine and then run:: nosetests --cover-package=pyenvjasmine --cover-erase \ --with-coverage --with-doctest $* .. note:: If you have installed pyenvjasmine in *development mode*, you can simply run:: nosetests -c nose.cfg to run the tests from within the pyenvjasmine sources directory. Run your own tests ------------------ The easiest way is to put your "specs" (JavaScript tests) into some directory in your code, then in your python tests, add a new TestCase with just one test that runs all your JavaScript tests. The simplest solution is to set capture_output to False, so you see the output from the js tests on the console. Something like this:: import unittest from pyenvjasmine.runner import TestRunner class JavaScriptTests(unittest.TestCase): def test_my_javascript(self): runner = TestRunner( testdir='/path/to/my/testdir', configfile='relative/path/to/configfile') runner.run(capture_output=False) If you want a more integrated test control, you could set capture_output to True, then parse the test output that is returned from the run() method, with something like this:: import unittest from pyenvjasmine.runner import TestRunner class JavaScriptTests(unittest.TestCase): def test_my_javascript_no_output(self): runner = TestRunner( testdir='/path/to/my/testdir', configfile='relative/path/to/configfile') res = runner.run(capture_output=True) lines = res.splitlines() self.assertTrue('Failed: 0' in lines) .. _envjasmine : https://github.com/trevmex/EnvJasmine .. _pip: http://www.pip-installer.org/en/latest/index.html .. _easy_install: http://peak.telecommunity.com/DevCenter/EasyInstall