| 1 | {{{ |
| 2 | #!rst |
| 3 | |
| 4 | Python envjasmine wrapper |
| 5 | ========================= |
| 6 | |
| 7 | This is a thin python wrapper around the envjasmine_ JavaScript |
| 8 | testing framework. |
| 9 | |
| 10 | |
| 11 | .. contents:: |
| 12 | |
| 13 | |
| 14 | Installation |
| 15 | ------------ |
| 16 | |
| 17 | You can install pyenvjasmine using pip_:: |
| 18 | |
| 19 | pip install pyenvjasmine |
| 20 | |
| 21 | Or you can grab the latest sources and install it from there:: |
| 22 | |
| 23 | python setup.py install |
| 24 | |
| 25 | Also, you can use it directly from the sources directory, in *development mode* |
| 26 | (useful if you want to contribute to the project):: |
| 27 | |
| 28 | pip install -e . |
| 29 | |
| 30 | .. note:: |
| 31 | |
| 32 | More about the *development mode* here: |
| 33 | |
| 34 | https://packaging.python.org/en/latest/distributing.html#working-in-development-mode |
| 35 | |
| 36 | .. warning:: |
| 37 | |
| 38 | Starting with version **0.3.0**, pyenvjasmine has support to run tests with |
| 39 | different browsers/engines. The headless browser rhino is included with |
| 40 | pyenvjasmine, but in order to use the other engines, you have to install the |
| 41 | needed browser(s). |
| 42 | |
| 43 | Right now, only phantomjs_ is supported, so ensure you have it installed if |
| 44 | you want to use that browser/engine to run tests on. **Required if you want |
| 45 | to run tests on jasmine 3.x** (also required to run pyenvjasmine's own |
| 46 | tests). |
| 47 | |
| 48 | |
| 49 | Running pyenvjasmine tests |
| 50 | -------------------------- |
| 51 | |
| 52 | To run the tests on this code here (as opposed to *your* JavaScript code you |
| 53 | want to test), install pyenvjasmine (and phantomjs) and then run:: |
| 54 | |
| 55 | py.test |
| 56 | |
| 57 | |
| 58 | Run your own tests |
| 59 | ------------------ |
| 60 | |
| 61 | The easiest way is to put your "specs" (JavaScript tests) into some directory |
| 62 | in your code, then in your python tests, add a new TestCase with just one test |
| 63 | that runs all your JavaScript tests. |
| 64 | |
| 65 | The simplest solution is to set capture_output to False, so you see the output |
| 66 | from the js tests on the console. Something like this:: |
| 67 | |
| 68 | import pytest |
| 69 | from pyenvjasmine.runner import Runner |
| 70 | |
| 71 | class TestJavaScript(object): |
| 72 | def test_my_javascript(self): |
| 73 | runner = Runner( |
| 74 | testdir='/path/to/my/testdir', |
| 75 | configfile='relative/path/to/configfile', |
| 76 | testing_environment='phantomjs') |
| 77 | success, stdout = runner.run() |
| 78 | # assert on success, will be true if tests passed, False if any |
| 79 | # test failed |
| 80 | assert success, "One or more javascript tests have failed" |
| 81 | # you can inspect stdout if you want to get more info, but it |
| 82 | # will be printed to the console stdout anyway |
| 83 | assert b'Total: 120' in stdout |
| 84 | |
| 85 | In this example, the *phantomjs* browse/engine is used, replace that with |
| 86 | *rhino* to run tests on rhino + jasmine 1.x. |
| 87 | |
| 88 | .. note:: |
| 89 | |
| 90 | *phantomjs* is the preferred browser/engine, so it is what pyenvjasmine |
| 91 | will use as a default if you don't set *testing_environment* when creating |
| 92 | a new *Runner* instance. |
| 93 | |
| 94 | .. _envjasmine : https://github.com/trevmex/EnvJasmine |
| 95 | .. _pip: http://www.pip-installer.org/en/latest/index.html |
| 96 | .. _easy_install: http://peak.telecommunity.com/DevCenter/EasyInstall |
| 97 | .. _phantomjs: http://phantomjs.org |
| 98 | |
| 99 | |
| 100 | }}} |