Skip to main content

A nose plugin to detect tests making http calls.

Project description

[not actively supported outside of internal Venmo usage]

A nose and pytest plugin that can detect tests making external http calls. With nose, it adds a single artificial failure with all the results:

$ nosetests -v --with-detecthttp example.py
test_that_makes_request (example.ExampleTests) ... ok
test_with_no_request (example.ExampleTests) ... ok

======================================================================
FAIL: Tests made external http calls
----------------------------------------------------------------------
- example.ExampleTests:

    test_that_makes_request:
      GET http://example.com/


----------------------------------------------------------------------
Ran 2 tests in 0.063s

FAILED (failures=1)

With pytest, failures are added to individual tests:

$ pytest --with-detecthttp example.py
...

item = <TestCaseFunction 'test_that_makes_request'>

    def pytest_runtest_teardown(item):
        # Note unmocked interactions collected during runtest_call.
        # This is raised here so that pytest doesn't mark it as an internal error.

        report = item.config._detecthttp_reports.pop(item.nodeid, None)
        if item.config._detecthttp_enabled and report:
>           raise report
E           UnmockedRequestsDetected: detecthttp noticed the following requests during this test:
E                 GET http://example.com/

detecthttp/pytest.py:82: UnmockedRequestsDetected
...2 passed, 1 error in 0.35 seconds

Localhost is automatically ignored. To ignore other hosts, use the –vcr-ignore-host option, which takes a comma-delimited list:

$ nosetests -v --with-detecthttp --vcr-ignore-host=example.com example.py
test_that_makes_request (example.ExampleTests) ... ok
test_with_no_request (example.ExampleTests) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.110s

OK

Under the hood, this wraps every test in a separate VCR.py cassette. Since VCR.py’s hooks are in the stdlib, this approach won’t detect requests made with clients like PycURL.

History

1.2.1

  • Add Python 3 support

1.1.0

released 2018-12-18

  • add pytest support

1.0.0

released 2018-09-12

  • breaking: ignore host flag now accepts comma-separated values rather than being provided multiple times

0.2.0

released 2017-08-15

  • add –vcr-ignore-host option to ignore custom hosts

0.1.3

released 2015-10-16

  • python 3 support

0.1.1

released 2014-11-24

  • initial release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nose-detecthttp-1.2.1.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

nose_detecthttp-1.2.1-py2.py3-none-any.whl (7.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file nose-detecthttp-1.2.1.tar.gz.

File metadata

  • Download URL: nose-detecthttp-1.2.1.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.0 importlib-metadata/4.2.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.7.12

File hashes

Hashes for nose-detecthttp-1.2.1.tar.gz
Algorithm Hash digest
SHA256 0b0c39b7e23666ecd8a87c6fbdddb247c58ba96dec29317cac9ccc9fddb3a97f
MD5 0d04171b9e17c6b43818d79bd3d39398
BLAKE2b-256 be530023e928569bf992a165ae9f6e0f8c71732b9bc1f4802e8ff9bc3bd6b5cf

See more details on using hashes here.

File details

Details for the file nose_detecthttp-1.2.1-py2.py3-none-any.whl.

File metadata

  • Download URL: nose_detecthttp-1.2.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.0 importlib-metadata/4.2.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.7.12

File hashes

Hashes for nose_detecthttp-1.2.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ea55241f47af6fd94ea3c8bef56602516dde980015341d337c5fbec901bdc0af
MD5 0ac9e134842560dd8d11bde7db9c9fd4
BLAKE2b-256 c3d7a77446331145149cf9ac749ce5fe750e7925bac85c162546faa66b7bf081

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page