Your IP : 216.73.216.249
B
�ˀX�
� @ sh d Z ddlmZ yddlZW n ek
r8 ddlZY nX ddlZddlmZ dZ G dd� dej
�ZdS ) a Minimal :class:`unittest.TestCase` subclass adding Betamax integration.
.. autoclass:: betamax.fixtures.unittest.BetamaxTestCase
:members:
When using Betamax with unittest, you can use the traditional style of Betamax
covered in the documentation thoroughly, or you can use your fixture methods,
:meth:`unittest.TestCase.setUp` and :meth:`unittest.TestCase.tearDown` to wrap
entire tests in Betamax.
Here's how you might use it:
.. code-block:: python
from betamax.fixtures import unittest
from myapi import SessionManager
class TestMyApi(unittest.BetamaxTestCase):
def setUp(self):
# Call BetamaxTestCase's setUp first to get a session
super(TestMyApi, self).setUp()
self.manager = SessionManager(self.session)
def test_all_users(self):
"""Retrieve all users from the API."""
for user in self.manager:
# Make assertions or something
Alternatively, if you are subclassing a :class:`requests.Session` to provide
extra functionality, you can do something like this:
.. code-block:: python
from betamax.fixtures import unittest
from myapi import Session, SessionManager
class TestMyApi(unittest.BetamaxTestCase):
SESSION_CLASS = Session
# See above ...
� )�absolute_importN� )�recorder)�BetamaxTestCasec s: e Zd ZdZejZdd� Z� fdd�Z� fdd�Z � Z
S )r zCBetamax integration for unittest.
.. versionadded:: 0.5.0
c C s t | d�}| j}d�|j|�S )a! Generates a cassette name for the current test.
The default format is "%(classname)s.%(testMethodName)s"
To change the default cassette format, override this method in a
subclass.
:returns: Cassette name for the current test.
:rtype: str
� __class__z{0}.{1})�getattrZ_testMethodName�format�__name__)�self�cls�test� r
�J/opt/alt/python37/lib/python3.7/site-packages/betamax/fixtures/unittest.py�generate_cassette_nameJ s
z&BetamaxTestCase.generate_cassette_namec s^ | � t| jtj�� tt| ��� | �� }| �� | _ t
j| j d�| _
| j
�|� | j
�
� dS )a Betamax-ified setUp fixture.
This will call the superclass' setUp method *first* and then it will
create a new :class:`requests.Session` and wrap that in a Betamax
object to record it. At the end of ``setUp``, it will start recording.
)�sessionN)Z
assertTrue�
issubclass�
SESSION_CLASS�requests�Session�superr �setUpr r r ZBetamaxZuse_cassette�start)r
Z
cassette_name)r r
r r Y s
zBetamaxTestCase.setUpc s t t| ��� | j�� dS )z�Betamax-ified tearDown fixture.
This will call the superclass' tearDown method *first* and then it
will stop recording interactions.
N)r r �tearDownr �stop)r
)r r
r r n s zBetamaxTestCase.tearDown)r �
__module__�__qualname__�__doc__r r r r r r �
__classcell__r
r
)r r r @ s
r )r �
__future__r Z unittest2Zunittest�ImportErrorr � r �__all__ZTestCaser r
r
r
r �<module>/ s