mikeengland / unittest_sandbox

unittest-sandbox provides a sandbox decorator which ensures unit test methods do not make any web/socket requests during test execution.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

unittest-sandbox

unittest-sandbox provides a @sandbox decorator which ensures unit test methods do not make any socket/web requests during test execution. Note: This currently only works with Python 3.

Installation

To install run: pip install unittest_sandbox

Example usage

from unittest import TestCase

import requests

from unittest_sandbox import InternetAccessBlockedException, sandbox

# The @sandbox() decorator can be applied to methods individually like below

class RequestTests(TestCase):
    def test_non_request_works(self):
        self.assertEqual(1 + 1, 2)

    @sandbox()
    def test_web_request_raises_exception_when_sandbox_decorator_is_applied(self):
        # If a web request is sent in a test method wrapped with the @sandbox decorator,
        # an InternetAccessBlockedException will be raised.

        with self.assertRaises(InternetAccessBlockedException):
            requests.get('https://www.google.com')

# The @sandbox() decorator can also be applied to the class as a whole. This is the same as decorating
# all 'test_' methods with @sandbox()

@sandbox()
class RequestTests(TestCase):
    def test_non_request_works(self):
        self.assertEqual(1 + 1, 2)

    def test_web_request_raises_exception_when_sandbox_decorator_is_applied(self):
        # If a web request is sent in a test method wrapped with the @sandbox decorator,
        # an InternetAccessBlockedException will be raised.

        with self.assertRaises(InternetAccessBlockedException):
            requests.get('https://www.google.com')

# A function can also be imported and called to prevent any web requests from occurring.
# For example, this could be called at the start of a Django settings file used by the test runner to
# ensure that no web requests are made by the tests.

from unittest_sandbox import block_socket_access

block_socket_access()

About

unittest-sandbox provides a sandbox decorator which ensures unit test methods do not make any web/socket requests during test execution.

License:Apache License 2.0


Languages

Language:Python 100.0%