Test from HTTP interactions to dataframe processed.
Project description
.. 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.
: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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pytest-vcrpandas-0.0.2.tar.gz
(7.7 kB
view hashes)
Built Distribution
Close
Hashes for pytest_vcrpandas-0.0.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 14882a5c79eb25c3ba1441703c2c4da27d71e2c76c2d9f5ff3adeeed7638111c |
|
MD5 | cab3b43cd883ffd72602e6a645767bc9 |
|
BLAKE2b-256 | 4fc59db9ba5a4e55ee8ef6fa837f636f0ec61173699002ad108b76b2fc7ca718 |