ejpiaj 0.4.4
ejpiaj
License: BSD
Keywords: ejpiaj

===============================
ejpiaj
===============================

.. image:: https://badge.fury.io/py/ejpiaj.png
    :target: http://badge.fury.io/py/ejpiaj
    
.. image:: https://travis-ci.org/onjin/ejpiaj.png?branch=master
        :target: https://travis-ci.org/onjin/ejpiaj

.. image:: https://pypip.in/d/ejpiaj/badge.png
        :target: https://pypi.python.org/pypi/ejpiaj

.. image:: https://pypip.in/license/ejpiaj/badge.png




License
-------

* Free software: BSD license

Features
--------

 * describe your API requests in single file (YAML, JSON and XML at this moment) so you can store you API tests with code
   in same repository (f.i. as ejpiaj.json file)
 * file format is detected from file extension ``.yml``, ``.json`` and ``.xml``
 * extract variables from responses and store them to use in next requests (f.i. to get and use authorization token)
 * write assertions agains responses
 * register your own variables extractors and assertions
 * run suite using ``ejpiaj-cli test -m my_addons -s tests.yml`` command

Sample yml file::

    requests:
      001_search_repos_with_django_in_name:
        method: get
        url: https://api.github.com/search/repositories
        url_params:
          q: django
          sort: stars
          order: desc
        variables:
          json:
            total_count: count
            items.[0].full_name: repo_name
        assertions:
          response:
            - 'status_code equals 200'
          json:
            - 'items.[0].full_name contains ango'

      002_get_commits_from_first_repo:
        method: get
        url: https://api.github.com/repos/{{repo_name}}/commits
        assertions:
          response:
            - 'status_code equals 200'

Run it::

    $ ejpiaj-cli test sample.yml -s

    --------------------------------------------------------------------------------
    P - passed assertions, F - failed assertions, V - extracted variables
    --------------------------------------------------------------------------------
    ✓ 001_search_repos_with_django_in_name [P2,F0,V2] {'count': 29754, 'repo_name': u'django/django'}
    ✓ 002_get_commits_from_first_repo [P1,F0,V0] {}
    --------------------------------------------------------------------------------

SNI note
--------
In order to support `SNI`_ in python 2.6/2.7 you need to install additional packages:

* `pyOpenSSL`, a Python wrapper module around the OpenSSL library.
* `ndg-httpsclient`, enhanced HTTPS support for httplib and urllib2.
* `pyasn1`, ASN.1 types and codecs.

.. _`SNI`: http://en.wikipedia.org/wiki/Server_Name_Indication


Documentation
-------------
* http://ejpiaj.readthedocs.org/en/latest/




History
-------

0.4.4 (2015-01-21)
++++++++++++++++++
* Fixed unicode errors while reading str/int parameters

0.4.3 (2014-09-10)
++++++++++++++++++
* Fixed compatibility with python 3.3

0.4.2 (2014-09-10)
++++++++++++++++++
* Fixed context replacing at variables replacing

0.4.1 (2014-09-10)
++++++++++++++++++
* Fixed non unicode extracted variables

0.4.0 (2014-03-11)
++++++++++++++++++
* Added support for xml and json files

0.3.3 (2014-03-06)
++++++++++++++++++
* Added -e / --env option to ``ejpiaj-cli`` to pass initial variables
* Added -q / --quiet option to ``ejpiaj-cli`` to quiet output

0.3.2 (2014-02-17)
++++++++++++++++++
* Added -s option to ``ejpiaj-cli`` to display extracted variables

0.3.1 (2014-02-17)
++++++++++++++++++
* Fixed loading custom module from current directory

0.3.0 (2014-02-16)
++++++++++++++++++
* Added support to load own module with custom assertions and variable extractors
  using ``ejpiaj-cli`` tool

0.2.3 (2014-02-10)
++++++++++++++++++
* Fixed tests order (alphabetical)

0.2.2 (2014-02-10)
++++++++++++++++++
* Fixed variable substiution for multi varaibles
* Added variable substitution in 'url'

0.2.1 (2014-02-07)
++++++++++++++++++

* Fixed variables substitution if variable is None

0.2.0 (2014-02-07)
++++++++++++++++++

* Added support for form_params and headers

0.1.0 (2014-02-01)
++++++++++++++++++

* First release on PyPI.