Skip to main content

Rehearser makes writing reliable unit tests super easy!

Project description

Quick Start

You can use Rehearser to build reliable unit tests quickly


Development Flow:

["Rehearsal run"] --> ["Adjust interactions files"] --> ["Create Mocks"] --> ["Write Unit Tests"] --> ["Finalize Implementation"]


1. Install Rehearser:

pip install rehearser

2. Creating a Rehearser Proxy:

  • Component to be tested : Usage
  • External services: ProductService , UserService and Cache
["Usage"] --uses--> ["ProductService"], ["UserService"] --uses--> ["Cache"]
  • In this step, we create Rehearser Proxies for instances ProductService() and UserService(), respectively.
rp_product = RehearserProxy(ProductService())
rp_user = RehearserProxy(UserService())

3. Generate Interactions:

Generate mock objects using the interactions created in the previous step:

# Apply patches to UserService and ProductService
with patch(
    "rehearser_examples.examples.example1.usage.UserService",
    return_value=rp_user,
), patch(
    "rehearser_examples.examples.example1.usage.ProductService",
    return_value=rp_product,
):
    # Rehearsal run
    Usage().run_example()

    # Generate interactions files
    rp_user.set_interactions_file_directory("./raw_files/rehearser_proxy/")
    rp_user.write_interactions_to_file()

    rp_product.set_interactions_file_directory("./raw_files/rehearser_proxy/")
    rp_product.write_interactions_to_file()
  • Notes: The interaction files are in json format, and you can adjust these thru editor manually before using these for further Mock object generation.

4. Write Unit Test:

Unit test body:

# Instantiate mock objects
mock_users = MockGenerator(
    interactions_src="./raw_files/rehearser_proxy/UserService/latest_interactions.json"
).create_mock()
mock_products = MockGenerator(
    interactions_src="./raw_files/rehearser_proxy/ProductService/latest_interactions.json"
).create_mock()

# Apply patches to UserService and ProductService
with patch(
    "rehearser_examples.examples.example1.usage.UserService",
    return_value=mock_users,
), patch(
    "rehearser_examples.examples.example1.usage.ProductService",
    return_value=mock_products,
):
    # Instantiate Usage with the mocked services
    result = Usage().run_example()

    # Insert your test assertions here
    self.assertTrue(result, "run_example() failed")

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

rehearser-0.1.6.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

rehearser-0.1.6-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file rehearser-0.1.6.tar.gz.

File metadata

  • Download URL: rehearser-0.1.6.tar.gz
  • Upload date:
  • Size: 9.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.13

File hashes

Hashes for rehearser-0.1.6.tar.gz
Algorithm Hash digest
SHA256 412bb16d7ce71bf1ed5ab6cdaa36392a9a7fd7848018d56477021dc1b7d9be32
MD5 26bf6360f9b46c33af862af2f811e5c8
BLAKE2b-256 65bea06491ea93d706f381f445549177e2a4cc9a37e1403258bdc1cc6807810b

See more details on using hashes here.

File details

Details for the file rehearser-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: rehearser-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 10.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.13

File hashes

Hashes for rehearser-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 874d4667ad17c1049f8df34c053290914a024ceea550c6fdfb25bbbc9988b623
MD5 d0efb23a20ba6da0cd9fd95c7ee71e2b
BLAKE2b-256 efe3e3ece8508f6e661f8678198773ab101551b90136bbbc22f07aebbb96f871

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