Metadata-Version: 2.1
Name: pytest-vcrpandas
Version: 0.0.2
Summary: Test from HTTP interactions to dataframe processed.
Home-page: https://github.com/gjeusel/pytest-vcrpandas
Author: See AUTHORS
Author-email: "guillaume.jeusel@gmail.com"
License: UNKNOWN
Platform: UNKNOWN
Classifier: Framework :: Pytest
Classifier: Development Status :: 4 - Beta
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.6
Requires-Dist: vcrpy
Requires-Dist: pandas
Requires-Dist: pytest

.. image:: https://travis-ci.com/gjeusel/pytest-vcrpandas.svg?branch=master
  :target: https://travis-ci.com/gjeusel/pytest-vcrpandas
.. image:: https://readthedocs.org/projects/pytest-vcrpandas/badge/?version=latest
  :target: http://pytest-vcrpandas.readthedocs.io/en/latest/?badge=latest
  :alt: Documentation Status
.. image:: https://codecov.io/gh/gjeusel/pytest-vcrpandas/branch/master/graph/badge.svg
  :target: https://codecov.io/gh/gjeusel/pytest-vcrpandas
.. image:: https://badge.fury.io/py/pytest-vcrpandas.svg
  :target: https://pypi.python.org/pypi/pytest-vcrpandas/
  :alt: Pypi package

===============================
pytest-vcrpandas
===============================

Combine `vcrpy <https://github.com/kevin1024/vcrpy>`_ with
`pandas <https://github.com/pandas-dev/pandas>`_ to not only mock your HTTP interactions,
but also tests your post-processing work to get a pandas DataFrame.

Usage
-----

.. code:: python

    # test_meteo_client.py

    def test_meteo_get_wind_speed(vcrpandas, client):
        start = pd.Timestamp('2018-01-01', tz='CET')
        end = pd.Timestamp('2018-02-01', tz='CET')
        with vcrpandas("meteo_get_wind_speed") as recorder:
            df = client.get_wind_speed(start, end)
            recorder(df)


.. code:: bash

    # call pytest for the first time to generate samples
    > pytest --vcr-record="new_episodes"

    # you can now replay it:
    > pytest


Behind the hood, 2 files are generated by the first run:

- a *meteo_get_wind_speed.yaml*, which is the reponse obtained by
  the first HTTP interaction.
- a *meteo_get_wind_speed.pickle* that serve to compare the formatting from
  the mocked response to the pandas DataFrame, types included.


Installation
------------

.. code:: bash

    pip install pytest-vcrpandas


Advanced Usage
--------------

To configure VCR, here is how to procee:


.. code:: python

  @pytest.fixture
  def my_vcrpandas(vcrpandas):
      custom_vcr_config = dict(
          serializer='json',
          cassette_library_dir='fixtures/myclient/cassettes',
          match_on=['uri', 'method'],
          filter_headers=['authorization'],  # filter information from HTTP Headers
          filter_query_parameters=['api_key'],  # filter information from HTTP query string
          filter_post_data_parameters=['client_secret'],  # filter information from HTTP post data
      )
      vcrpandas.config.update(custom_vcr_config)
      return vcrpandas


  def test_mysupertest(my_vcrpandas):
      with my_vcrpandas("random_bucket_name") as recorder:
          recorder(CL.get_stuff())


Refere to `VCR configuration <https://vcrpy.readthedocs.io/en/latest/configuration.html`_ and
`VCR Advanced Features <https://vcrpy.readthedocs.io/en/latest/advanced.html>`_ to get the
full list of options.



