GitXplorerGitXplorer
a

requests-testadapter

public
5 stars
7 forks
0 issues

Commits

List of commits on branch master.
Unverified
41011eb4baa8336a2d55fd87119fd8579f525c52

full-fledged .gitignore

aambv committed 11 years ago
Unverified
813d12a45da24695b96f019c0b606e130e5e0d93

0.3.0: compatibility with requests 1.2.1+

aambv committed 11 years ago
Unverified
9b44bfe6874650f88d6548dfa048698451933993

Merge pull request #2 from lukesneeringer/master

aambv committed 11 years ago
Unverified
9b74247acead4df17bbbe717681bce3cc65123a6

Eschew super altogether.

llukesneeringer committed 11 years ago
Unverified
9cf4c8609180220f727c128a3e39defa454b1f6d

Use the Python 2 super syntax.

llukesneeringer committed 11 years ago
Unverified
0a74d13795fc3ab508698557509b126de1750b8b

Ignore keyword arguments to Resp.read()

llukesneeringer committed 11 years ago

README

The README file for this repository.

==================== requests-testadapter

.. image:: https://secure.travis-ci.org/ambv/requests-testadapter.png :target: https://secure.travis-ci.org/ambv/requests-testadapter

Currently a very basic module that provides an adapter for requests <http://pypi.python.org/pypi/requests>_ that mocks network activity for unit test purposes.

How to use

This code assumes your HTTP client is written in a way that enables passing a custom Session <http://www.python-requests.org/en/latest/user/advanced/#session-objects>_ object. When that's the case, all you have to do is to mount the adapter to answer for a specific prefix::

import requests from requests_testadapter import TestAdapter s = requests.Session() s.mount('http://', TestAdapter(b'Mock!', status=404)) r = s.get('http://mocked.com') r.status_code 404 r.text 'Mock!'

You can also specify a headers dictionary as a keyword argument to TestAdapter.

TestSession


In ``requests`` 1.2.0 and older, the order of mounted adapters is
unpredictable.  To make sure you can mount arbitrary paths with their own
respective adapters, use ``TestSession`` which always matches the longest
prefix::

  >>> from requests_testadapter import TestAdapter, TestSession
  >>> s = TestSession()
  >>> s.mount('http://git', TestAdapter(b'git'))
  >>> s.mount('http://github', TestAdapter(b'github'))
  >>> s.mount('http://github.com', TestAdapter(b'github.com'))
  >>> s.mount('http://github.com/about/', TestAdapter(b'github.com/about'))
  >>> r = s.get('http://github.com/about/')
  >>> r.text
  u'github.com/about'
  >>> r = s.get('http://github.com')
  >>> r.text
  u'github.com'
  >>> r = s.get('http://gittip.com')
  >>> r.text
  u'git'

``TestSession`` doesn't connect the default handlers for HTTP and HTTPS so you
will be notified if your requests unintentionally try to reach external
websites in your unit tests::

  >>> r = s.get('http://bitbucket.org')
  Traceback (most recent call last):
  ...
  requests.exceptions.InvalidSchema: No connection adapters were found for
  'http://bitbucket.org/'

How do I run the tests?
-----------------------

The easiest way would be to extract the source tarball and run::

  $ python test/test_testadapter.py

If you have all compatible Python implementations available on your system, you
can run tests on all of them by using tox::

  $ pip install tox
  $ tox
  GLOB sdist-make: setup.py
  py26 inst-nodeps: .tox/dist/requests-testadapter-0.1.0.zip
  py26 runtests: commands[0]
  ..
  ----------------------------------------------------------------------
  Ran 2 tests in 0.014s

  OK
  py27 inst-nodeps: .tox/dist/requests-testadapter-0.1.0.zip
  py27 runtests: commands[0]
  ..
  ----------------------------------------------------------------------
  Ran 2 tests in 0.014s

  OK
  py32 inst-nodeps: .tox/dist/requests-testadapter-0.1.0.zip
  py32 runtests: commands[0]
  ..
  ----------------------------------------------------------------------
  Ran 2 tests in 0.024s

  OK
  py33 inst-nodeps: .tox/dist/requests-testadapter-0.1.0.zip
  py33 runtests: commands[0]
  ..
  ----------------------------------------------------------------------
  Ran 2 tests in 0.017s

  OK
  _______________________________ summary ______________________________
    py26: commands succeeded
    py27: commands succeeded
    py32: commands succeeded
    py33: commands succeeded
    congratulations :)

Change Log
----------

0.3.0
~~~~~

* fixed a compatibility problem with ``requests`` 1.2.1+

0.2.0
~~~~~

* introduced ``TestSession`` to make adapter order predictable in ``requests``
  1.2 and older

* ``TestAdapter`` doesn't prefetch ``response.content`` anymore if
  ``stream=True`` is passed to a request. This lets the user read
  ``response.raw`` herself.

0.1.0
~~~~~

* initial published version

Authors
-------

Glued together by `Łukasz Langa <mailto:lukasz@langa.pl>`_. Additional fixes by
Luke Sneeringer.