Currently a very basic module that provides an adapter for 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 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
Metadata
Release files for requests-testadapter 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| requests-testadapter-0.3.0.tar.gz | 5.4 kB | Without provenance | Details for requests-testadapter-0.3.0.tar.gz |
Release files / requests-testadapter-0.3.0.tar.gz
| Download URL | requests-testadapter-0.3.0.tar.gz |
|---|---|
| Size | 5.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0a9f824acc995753ca6f2e306fbbdb16015c8c44c1d14c9060717e32b99318b0
|
|
BLAKE2b-256 checksum How to use checksums |
7f83bf096ac4dbbbdce38685bc8796147bfa371e29ee8a64860201db29668910
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for requests-testadapter 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.