• Get Review Board
  • What's New
  • Products
  • Review Board Code review, image review, and document review
  • Documentation
  • Release Notes
  • Power Pack Enterprise integrations, reports, and enhanced document review
  • Try for 60 Days
  • Purchase
  • RBCommons Review Board as a Service, hosted by us
  • Pricing
  • RBTools Command line tools and Python API for Review Board
  • Documentation
  • Release Notes
  • Review Bot Automated code review, connecting tools you already use
  • Documentation
  • Release Notes
  • RB Gateway Manage Git and Mercurial repositories in your network
  • Documentation
  • Release Notes
  • Learn and Explore
  • What is Code Review?
  • Documentation
  • Frequently Asked Questions
  • Support Options
  • Third-Party Integrations
  • Demo
  • Review Board RBTools Power Pack Review Bot Djblets RB Gateway
    1. RBTools 6.x
    2. Version 6.x
    3. Version 5.x
    4. Version 4.x
    5. Version 3.x
    6. Version 2.0
    7. Version 1.0
    8. Version 0.7
    9. Version 0.6
    10. Version 0.5
    11. RBTools Python API
    12. Module and Class References
    13. rbtools.testing.testcase
  • Home
  • Installing RBTools
  • Authenticating to Review Board
  • rbt Command
  • Configuration
  • Creating Custom Command Aliases
  • Repository Configuration
  • Per-User Configuration
  • Azure DevOps / Team Foundation Server Configuration
  • Commands
  • alias
  • api-get
  • attach
  • clear-cache
  • close
  • diff
  • info
  • install
  • land
  • list-repo-types
  • login
  • logout
  • patch
  • post
  • publish
  • review
  • setup-completion
  • setup-repo
  • stamp
  • status
  • status-update
  • RBTools Workflows
  • Using RBTools with Git
  • Using RBTools With Perforce
  • Using RBTools with Jujutsu
  • Using RBTools with HCL ClearCase and IBM ClearCase
  • Using RBTools With Keysight SOS
  • RBTools Python API
  • Overview of the Python API Client
  • Common Use Cases
  • Module and Class References
  • rbtools
  • rbtools.deprecation
  • rbtools.api
  • rbtools.api.cache
  • rbtools.api.capabilities
  • rbtools.api.client
  • rbtools.api.decode
  • rbtools.api.decorators
  • rbtools.api.errors
  • rbtools.api.factory
  • rbtools.api.request
  • rbtools.api.transport
  • rbtools.api.transport.sync
  • rbtools.api.utils
  • rbtools.api.resource
  • rbtools.api.resource.base
  • rbtools.api.resource.base_archived_object
  • rbtools.api.resource.base_comment
  • rbtools.api.resource.base_diff_commit
  • rbtools.api.resource.base_review_group
  • rbtools.api.resource.base_review_request
  • rbtools.api.resource.base_review
  • rbtools.api.resource.base_user
  • rbtools.api.resource.mixins
  • rbtools.api.resource.api_token
  • rbtools.api.resource.archived_review_request
  • rbtools.api.resource.change
  • rbtools.api.resource.default_reviewer
  • rbtools.api.resource.diff_comment
  • rbtools.api.resource.diff_commit
  • rbtools.api.resource.diff_context
  • rbtools.api.resource.diff_file_attachment
  • rbtools.api.resource.diff
  • rbtools.api.resource.draft_diff_commit
  • rbtools.api.resource.draft_file_attachment
  • rbtools.api.resource.draft_screenshot
  • rbtools.api.resource.extension
  • rbtools.api.resource.file_attachment_comment
  • rbtools.api.resource.file_attachment
  • rbtools.api.resource.file_diff
  • rbtools.api.resource.general_comment
  • rbtools.api.resource.hosting_service_account
  • rbtools.api.resource.hosting_service
  • rbtools.api.resource.last_update
  • rbtools.api.resource.muted_review_request
  • rbtools.api.resource.oauth_application
  • rbtools.api.resource.oauth_token
  • rbtools.api.resource.plain_text
  • rbtools.api.resource.remote_repository
  • rbtools.api.resource.repository_branch
  • rbtools.api.resource.repository_commit
  • rbtools.api.resource.repository_group
  • rbtools.api.resource.repository_info
  • rbtools.api.resource.repository_user
  • rbtools.api.resource.repository
  • rbtools.api.resource.review_group_user
  • rbtools.api.resource.review_group
  • rbtools.api.resource.review_reply
  • rbtools.api.resource.review_request_draft
  • rbtools.api.resource.review_request
  • rbtools.api.resource.review
  • rbtools.api.resource.root
  • rbtools.api.resource.screenshot_comment
  • rbtools.api.resource.screenshot
  • rbtools.api.resource.search
  • rbtools.api.resource.server_info
  • rbtools.api.resource.session
  • rbtools.api.resource.status_update
  • rbtools.api.resource.user_file_attachment
  • rbtools.api.resource.user
  • rbtools.api.resource.validate_diff_commit
  • rbtools.api.resource.validate_diff
  • rbtools.api.resource.validation
  • rbtools.api.resource.watched_review_group
  • rbtools.api.resource.watched_review_request
  • rbtools.api.resource.watched
  • rbtools.api.resource.webhook
  • rbtools.clients
  • rbtools.clients.base
  • rbtools.clients.base.patch
  • rbtools.clients.base.registry
  • rbtools.clients.base.repository
  • rbtools.clients.base.scmclient
  • rbtools.clients.errors
  • rbtools.clients.bazaar
  • rbtools.clients.clearcase
  • rbtools.clients.cvs
  • rbtools.clients.git
  • rbtools.clients.mercurial
  • rbtools.clients.perforce
  • rbtools.clients.plastic
  • rbtools.clients.sos
  • rbtools.clients.svn
  • rbtools.clients.tfs
  • rbtools.config
  • rbtools.config.config
  • rbtools.config.loader
  • rbtools.diffs
  • rbtools.diffs.patches
  • rbtools.diffs.patcher
  • rbtools.diffs.tools
  • rbtools.diffs.tools.backends
  • rbtools.diffs.tools.backends.gnu
  • rbtools.diffs.tools.base
  • rbtools.diffs.tools.base.diff_file_result
  • rbtools.diffs.tools.base.diff_tool
  • rbtools.diffs.tools.errors
  • rbtools.diffs.tools.registry
  • rbtools.diffs.writers
  • rbtools.commands
  • rbtools.commands.main
  • rbtools.commands.base
  • rbtools.commands.base.commands
  • rbtools.commands.base.errors
  • rbtools.commands.base.options
  • rbtools.commands.base.output
  • rbtools.commands.alias
  • rbtools.commands.api_get
  • rbtools.commands.attach
  • rbtools.commands.clearcache
  • rbtools.commands.close
  • rbtools.commands.diff
  • rbtools.commands.info
  • rbtools.commands.install
  • rbtools.commands.land
  • rbtools.commands.list_repo_types
  • rbtools.commands.login
  • rbtools.commands.logout
  • rbtools.commands.patch
  • rbtools.commands.post
  • rbtools.commands.publish
  • rbtools.commands.review
  • rbtools.commands.setup_completion
  • rbtools.commands.setup_repo
  • rbtools.commands.stamp
  • rbtools.commands.status
  • rbtools.commands.status_update
  • rbtools.hooks
  • rbtools.hooks.common
  • rbtools.hooks.git
  • rbtools.testing
  • rbtools.testing.api
  • rbtools.testing.api.payloads
  • rbtools.testing.api.transport
  • rbtools.testing.commands
  • rbtools.testing.testcase
  • rbtools.testing.transport
  • rbtools.utils
  • rbtools.utils.aliases
  • rbtools.utils.browser
  • rbtools.utils.checks
  • rbtools.utils.commands
  • rbtools.utils.console
  • rbtools.utils.diffs
  • rbtools.utils.encoding
  • rbtools.utils.errors
  • rbtools.utils.filesystem
  • rbtools.utils.graphs
  • rbtools.utils.mimetypes
  • rbtools.utils.process
  • rbtools.utils.repository
  • rbtools.utils.review_request
  • rbtools.utils.source_tree
  • rbtools.utils.users
  • Glossary
  • General Index
  • Python Module Index
  • Release Notes
  • rbtools.testing.testcase¶

    Base test cases for RBTools unit tests.

    Classes

    TestCase([methodName])

    The base class for RBTools test cases.

    class rbtools.testing.testcase.TestCase(methodName='runTest')[source]¶

    Bases: TestCase

    The base class for RBTools test cases.

    This provides helpful utility functions, environment management, and better docstrings to help craft unit tests for RBTools functionality. All RBTools unit tests should use this this class or a subclass of it as the base class.

    TEST_SERVER_URL = 'https://reviews.example.com/'[source]¶

    A sample test URL for a Review Board server.

    Added in version 3.1.

    __firstlineno__ = 32¶
    __static_attributes__ = ('_old_cwd', 'old_home')¶
    assertDiffEqual(diff: bytes, expected_diff: bytes) → None[source]¶

    Assert that two diffs are equal.

    Parameters:
    • diff (bytes) – The generated diff.

    • expected_diff (bytes) – The expected diff.

    Raises:

    AssertionError – The diffs aren’t equal or of the right type.

    assertRaisesMessage(expected_exception: type[Exception], expected_message: str) → _AssertRaisesContext[Exception][source]¶

    Assert that a call raises an exception with the given message.

    Parameters:
    • expected_exception (type) – The type of exception that’s expected to be raised.

    • expected_message (str) – The expected exception message.

    Raises:

    AssertionError – The assertion failure, if the exception and message isn’t raised.

    chdir_tmp() → str[source]¶

    Create a temporary directory and set it as the working directory.

    The directory will be deleted after the test has finished.

    Added in version 3.0.

    Returns:

    The path to the temp directory.

    Return type:

    str

    create_rbclient() → RBClient[source]¶

    Return a RBClient for testing.

    This will set up a URLMapTransport. It’s recommended that the caller access it via get_rbclient_transport().

    Added in version 3.1.

    Parameters:

    transport (rbtools.api.transport.Transport, optional) – An explicit transport instance to use

    Returns:

    The client for testing purposes.

    Return type:

    rbtools.api.client.RBClient

    default_text_editor: str = '/Users/chipx86/buildroots/rbtools-6.x/bin/python3.14 /private/var/folders/34/6wkbp94x5g79sbk8kfrscpzw0000gn/T/beanbag-tools.mno31pwe/rbtools/testing/scripts/editor.py'¶

    The default text editor to use for tests.

    By default, this will use a fake editor that’s bundled with the test suite.

    env(env: dict[str, str | None]) → Iterator[None][source]¶

    Run code with custom environment variables temporarily set.

    This will set environment variables to the provided values (or erase them from the environment if set to None) before executing the code in the context.

    Once executed, the old environment will be restored.

    Added in version 5.0.

    Parameters:

    env (dict) – The environment variables to set/remove.

    Context:

    Code will execute with the new environment set.

    get_rbclient_transport(client: RBClient) → Transport[source]¶

    Return the transport associated with a RBClient.

    This allows tests to avoid reaching into RBClient internals in order to get the transport.

    Added in version 3.1.

    Parameters:

    client (rbtools.api.client.RBClient) – The client instance.

    Returns:

    The client’s transport.

    Return type:

    rbtools.api.transport.Transport

    get_user_home() → str[source]¶

    Return the user’s current home directory.

    Added in version 3.0.

    Returns:

    The current home directory.

    Return type:

    str

    make_binary_file_patch(*, old_path: str | None, new_path: str | None, status: Literal['added', 'deleted', 'modified', 'moved'], file_attachment: FileAttachmentItemResource | None, content: bytes) → BinaryFilePatch[source]¶

    Create a binary file patch for testing.

    Added in version 6.0.

    Parameters:
    • old_path (str) – The original file path relative to the repository root.

    • new_path (str) – The modified file path relative to the repository root.

    • status (str) – The file operation.

    • file_attachment (rbtools.api.resource.FileAttachmentItemResource) – The resource that the file should be downloaded from.

    • content (bytes) – The file content to return when the file is “downloaded”.

    Returns:

    The patch object.

    Return type:

    rbtools.diffs.patches.BinaryFilePatch

    maxDiff = None[source]¶
    needs_temp_home: bool = False¶

    Whether individual unit tests need a new temporary HOME directory.

    If set, a directory will be created at test startup, and will be set as the home directory.

    Added in version 3.0.

    old_home: str¶

    The home directory before the current test was run.

    precreate_tempdirs(count: int) → Sequence[str][source]¶

    Pre-create a specific number of temporary directories.

    This will call make_tempdir() the specified number of times, returning the list of generated temp paths, and will then spy that function to return those temp paths.

    Once each pre-created temp path is used up, any further calls to make_tempdir() will result in an error, failing the test.

    This is useful in unit tests that need to script a series of expected calls using kgb (such as through kgb.ops.SpyOpMatchInOrder) that need to know the names of temporary filenames up-front.

    Unit test suites that use this must mix in kgb.SpyAgency.

    Added in version 3.0.

    Parameters:

    count (int) – The number of temporary directories to pre-create.

    Returns:

    The list of temporary directory paths.

    Return type:

    list of str

    Raises:

    AssertionError – The test suite class did not mix in kgb.SpyAgency.

    precreate_tempfiles(count: int) → Sequence[str][source]¶

    Pre-create a specific number of temporary files.

    This will call make_tempfile() the specified number of times, returning the list of generated temp file paths, and will then spy that function to return those temp files.

    Once each pre-created temp file is used up, any further calls to make_tempfile() will result in an error, failing the test.

    This is useful in unit tests that need to script a series of expected calls using kgb (such as through kgb.ops.SpyOpMatchInOrder) that need to know the names of temporary filenames up-front.

    Unit test suites that use this must mix in kgb.SpyAgency.

    Added in version 3.0.

    Parameters:

    count (int) – The number of temporary filenames to pre-create.

    Returns:

    The list of temporary file paths.

    Return type:

    list of str

    Raises:

    AssertionError – The test suite class did not mix in kgb.SpyAgency.

    reviewboardrc(config: str | dict[str, object], use_temp_dir: bool = False) → Iterator[None][source]¶

    Populate a temporary .reviewboardrc file.

    This will create a .reviewboardrc file, either in the current directory or in a new temporary directory (if use_temp_dir is set). The file will contain the provided configuration.

    Added in version 3.0.

    Parameters:
    • config (dict or str) –

      A dictionary of key-value pairs to write into the .reviewboardrc file, or the string contents of the file.

      A best effort attempt will be made to write each configuration to the file.

    • use_temp_dir (bool, optional) – Whether a temporary directory should be created and set as the current directory. If set, the file will be written there, and the directory will be removed after the context manager finishes.

    Context:

    The code being run will have a .reviewboardrc in the current directory.

    setUp() → None[source]¶

    Set up a single test.

    This will store some initial state for tests and optionally create a new current HOME directory to run the tests within.

    classmethod setUpClass() → None[source]¶

    Set up the test suite.

    This will store some state that can be restored once all tests in the class have been run.

    set_user_home(path: str) → None[source]¶

    Set the user’s current home directory.

    This will be unset when the unit test has finished.

    Added in version 3.0.

    Parameters:

    path (str) – The new home directory.

    shortDescription() → str[source]¶

    Returns the description of the current test.

    This changes the default behavior to replace all newlines with spaces, allowing a test description to span lines. It should still be kept short, though.

    Returns:

    The descriptive text for the current unit test.

    Return type:

    str

    tearDown() → None[source]¶

    Tear down a single test.

    This will clean up any temporary files and directories, and restore the current directory and HOME direcotry.

    classmethod tearDownClass() → None[source]¶

    Tear down the test suite.

    This will restore the current directory to what was set prior to the test runs, and then call any parent tear-down logic.

    write_reviewboardrc(config: str | dict[str, object] = {}, *, parent_dir: str | None = None, filename: str = '.reviewboardrc') → str[source]¶

    Write a .reviewboardrc file to a directory.

    This allows for control over where the file is written, what it’s named, and the serialization of the contents of the file.

    Added in version 5.0.

    Parameters:
    • config (dict or str) – A dictionary of settings to write, or a string payload for the entire file.

    • parent_dir (str, optional) –

      The directory where the configuration file should go.

      This will default to the current directory.

    • filename (str, optional) –

      The name of the configuration file.

      This defaults to .reviewboardrc.

    Returns:

    The resulting path to the configuration file.

    Return type:

    str

    ws_re = re.compile('\\s+')[source]¶

    Regex for matching consecutive whitespace characters.

    Keep up with the latest Review Board releases, security updates, and helpful information.

    About
    News
    Demo
    RBCommons Hosting
    Integrations
    Happy Users
    Support Options
    Documentation
    FAQ
    User Manual
    RBTools
    Administration Guide
    Power Pack
    Release Notes
    Downloads
    Review Board
    RBTools
    Djblets
    Power Pack
    Package Store
    PGP Signatures
    Contributing
    Bug Tracker
    Submit Patches
    Development Setup
    Wiki
    Follow Us
    Mailing Lists
    Reddit
    Twitter
    Mastodon
    Facebook
    YouTube

    Copyright © 2006-2026 Beanbag, Inc. All rights reserved.

    Terms of Service — Privacy Policy — AI Ethics Policy — Branding

    On this page

    • [Top]
    • TestCase
      • TestCase.TEST_SERVER_URL
      • TestCase.__firstlineno__
      • TestCase.__static_attributes__
      • TestCase.assertDiffEqual()
      • TestCase.assertRaisesMessage()
      • TestCase.chdir_tmp()
      • TestCase.create_rbclient()
      • TestCase.default_text_editor
      • TestCase.env()
      • TestCase.get_rbclient_transport()
      • TestCase.get_user_home()
      • TestCase.make_binary_file_patch()
      • TestCase.maxDiff
      • TestCase.needs_temp_home
      • TestCase.old_home
      • TestCase.precreate_tempdirs()
      • TestCase.precreate_tempfiles()
      • TestCase.reviewboardrc()
      • TestCase.setUp()
      • TestCase.setUpClass()
      • TestCase.set_user_home()
      • TestCase.shortDescription()
      • TestCase.tearDown()
      • TestCase.tearDownClass()
      • TestCase.write_reviewboardrc()
      • TestCase.ws_re