• 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. Djblets 5.x
    2. Version 5.x
    3. Version 4.x
    4. Version 3.x
    5. Version 2.x
    6. Version 2.0
    7. Version 1.0
    8. Version 0.9
    9. Djblets Documentation
    10. Module and Class References
    11. djblets.extensions.testing.testcases
  • Home
  • Guides
  • Avatar Services Guides
  • Writing Avatar Services
  • Extension Guides
  • Writing Extensions
  • Testing Extensions
  • Feature Checks Guides
  • Introduction to Feature Checks
  • Writing Features
  • Writing Feature Checkers
  • Testing with Feature Checks
  • Integration Guides
  • Supporting Integrations
  • Writing Integrations
  • Privacy Compliance Guides
  • Getting and Checking Consent
  • Working with Personally Identifiable Information
  • Service Integrations
  • reCAPTCHA Guides
  • Using reCAPTCHA
  • Registries Guides
  • Writing Registries
  • Web API Guides
  • Writing Web API Resources
  • Adding OAuth2 Support
  • Module and Class References
  • djblets
  • djblets.deprecation
  • djblets.auth.forms
  • djblets.auth.ratelimit
  • djblets.auth.signals
  • djblets.auth.util
  • djblets.auth.views
  • djblets.avatars.errors
  • djblets.avatars.forms
  • djblets.avatars.registry
  • djblets.avatars.services
  • djblets.avatars.services.base
  • djblets.avatars.services.fallback
  • djblets.avatars.services.file_upload
  • djblets.avatars.services.gravatar
  • djblets.avatars.services.url
  • djblets.avatars.settings
  • djblets.cache.backend
  • djblets.cache.backend_compat
  • djblets.cache.context_processors
  • djblets.cache.errors
  • djblets.cache.forwarding_backend
  • djblets.cache.serials
  • djblets.cache.synchronizer
  • djblets.conditions
  • djblets.conditions.choices
  • djblets.conditions.conditions
  • djblets.conditions.errors
  • djblets.conditions.operators
  • djblets.conditions.values
  • djblets.configforms.forms
  • djblets.configforms.mixins
  • djblets.configforms.pages
  • djblets.configforms.registry
  • djblets.configforms.views
  • djblets.datagrid.grids
  • djblets.db.backends.mysql.base
  • djblets.db.fields
  • djblets.db.fields.base64_field
  • djblets.db.fields.comma_separated_values_field
  • djblets.db.fields.counter_field
  • djblets.db.fields.json_field
  • djblets.db.fields.modification_timestamp_field
  • djblets.db.fields.relation_counter_field
  • djblets.db.managers
  • djblets.db.query
  • djblets.db.query_catcher
  • djblets.db.query_comparator
  • djblets.db.validators
  • djblets.extensions.admin
  • djblets.extensions.errors
  • djblets.extensions.extension
  • djblets.extensions.forms
  • djblets.extensions.hooks
  • djblets.extensions.loaders
  • djblets.extensions.manager
  • djblets.extensions.middleware
  • djblets.extensions.models
  • djblets.extensions.packaging
  • djblets.extensions.resources
  • djblets.extensions.settings
  • djblets.extensions.signals
  • djblets.extensions.staticfiles
  • djblets.extensions.testing
  • djblets.extensions.testing.testcases
  • djblets.extensions.urls
  • djblets.extensions.views
  • djblets.extensions.templatetags.djblets_extensions
  • djblets.features
  • djblets.features.checkers
  • djblets.features.decorators
  • djblets.features.errors
  • djblets.features.feature
  • djblets.features.level
  • djblets.features.registry
  • djblets.features.testing
  • djblets.features.templatetags.features
  • djblets.forms.fields
  • djblets.forms.fieldsets
  • djblets.forms.forms
  • djblets.forms.forms.key_value_form
  • djblets.forms.widgets
  • djblets.gravatars
  • djblets.gravatars.templatetags.gravatars
  • djblets.http.middleware
  • djblets.http.responses
  • djblets.integrations.errors
  • djblets.integrations.forms
  • djblets.integrations.hooks
  • djblets.integrations.integration
  • djblets.integrations.manager
  • djblets.integrations.mixins
  • djblets.integrations.models
  • djblets.integrations.urls
  • djblets.integrations.views
  • djblets.log
  • djblets.log.middleware
  • djblets.log.siteconfig
  • djblets.log.urls
  • djblets.log.views
  • djblets.mail.dmarc
  • djblets.mail.message
  • djblets.mail.testing
  • djblets.mail.utils
  • djblets.markdown
  • djblets.markdown.extensions.escape_html
  • djblets.markdown.extensions.wysiwyg
  • djblets.markdown.extensions.wysiwyg_email
  • djblets.pipeline.compilers.es6
  • djblets.pipeline.compilers.less
  • djblets.pipeline.compilers.mixins
  • djblets.pipeline.compilers.rollup
  • djblets.pipeline.compilers.typescript
  • djblets.pipeline.settings
  • djblets.privacy.consent
  • djblets.privacy.consent.base
  • djblets.privacy.consent.common
  • djblets.privacy.consent.errors
  • djblets.privacy.consent.forms
  • djblets.privacy.consent.hooks
  • djblets.privacy.consent.registry
  • djblets.privacy.consent.tracker
  • djblets.privacy.models
  • djblets.privacy.pii
  • djblets.privacy.templatetags.djblets_privacy
  • djblets.recaptcha.mixins
  • djblets.recaptcha.siteconfig
  • djblets.recaptcha.templatetags.djblets_recaptcha
  • djblets.recaptcha.widgets
  • djblets.registries
  • djblets.registries.errors
  • djblets.registries.importer
  • djblets.registries.mixins
  • djblets.registries.registry
  • djblets.registries.signals
  • djblets.secrets
  • djblets.secrets.crypto
  • djblets.secrets.token_generators
  • djblets.secrets.token_generators.base
  • djblets.secrets.token_generators.legacy_sha1
  • djblets.secrets.token_generators.registry
  • djblets.secrets.token_generators.vendor_checksum
  • djblets.siteconfig
  • djblets.siteconfig.admin
  • djblets.siteconfig.context_processors
  • djblets.siteconfig.django_settings
  • djblets.siteconfig.forms
  • djblets.siteconfig.managers
  • djblets.siteconfig.middleware
  • djblets.siteconfig.models
  • djblets.siteconfig.signals
  • djblets.siteconfig.views
  • djblets.template.caches
  • djblets.template.context
  • djblets.template.loaders.conditional_cached
  • djblets.template.loaders.namespaced_app_dirs
  • djblets.testing.decorators
  • djblets.testing.testcases
  • djblets.testing.testrunners
  • djblets.urls.context_processors
  • djblets.urls.decorators
  • djblets.urls.patterns
  • djblets.urls.resolvers
  • djblets.urls.root
  • djblets.urls.staticfiles
  • djblets.util.compat.django.core.cache
  • djblets.util.compat.python.past
  • djblets.util.contextmanagers
  • djblets.util.dates
  • djblets.util.decorators
  • djblets.util.filesystem
  • djblets.util.functional
  • djblets.util.html
  • djblets.util.http
  • djblets.util.humanize
  • djblets.util.json_utils
  • djblets.util.properties
  • djblets.util.serializers
  • djblets.util.symbols
  • djblets.util.templatetags.djblets_deco
  • djblets.util.templatetags.djblets_email
  • djblets.util.templatetags.djblets_forms
  • djblets.util.templatetags.djblets_images
  • djblets.util.templatetags.djblets_js
  • djblets.util.templatetags.djblets_utils
  • djblets.util.typing
  • djblets.util.views
  • djblets.views.generic.base
  • djblets.views.generic.etag
  • djblets.webapi.auth
  • djblets.webapi.auth.backends
  • djblets.webapi.auth.backends.api_tokens
  • djblets.webapi.auth.backends.base
  • djblets.webapi.auth.backends.basic
  • djblets.webapi.auth.backends.oauth2_tokens
  • djblets.webapi.auth.views
  • djblets.webapi.decorators
  • djblets.webapi.encoders
  • djblets.webapi.errors
  • djblets.webapi.fields
  • djblets.webapi.managers
  • djblets.webapi.models
  • djblets.webapi.oauth2_scopes
  • djblets.webapi.resources
  • djblets.webapi.resources.base
  • djblets.webapi.resources.group
  • djblets.webapi.resources.registry
  • djblets.webapi.resources.root
  • djblets.webapi.resources.user
  • djblets.webapi.resources.mixins.api_tokens
  • djblets.webapi.resources.mixins.forms
  • djblets.webapi.resources.mixins.oauth2_tokens
  • djblets.webapi.resources.mixins.queries
  • djblets.webapi.responses
  • djblets.webapi.signals
  • djblets.webapi.testing
  • djblets.webapi.testing.decorators
  • djblets.webapi.testing.testcases
  • General Index
  • Python Module Index
  • Release Notes
  • djblets.extensions.testing.testcases¶

    Mixins for test cases that need to test enabled extensions.

    class DefaultTestsExtensionManager(key: str)[source]¶

    Bases: ExtensionManager

    Default extension manager for unit tests.

    New in version 2.3.

    __annotations__ = {}¶
    class ExtensionTestCaseMixin[source]¶

    Bases: object

    Unit tests mixin for more easily testing extensions.

    This will do the hard work of creating the fake registration information needed for an extension and to instantiate an instance for testing.

    Subclasses need to define extension_class and may want to implement get_extension_manager() (by default, the first registered extension manager will be used).

    Projects may want to provide their own subclass for their extensions to use that implements get_extension_manager(), so extensions won’t have to.

    Changed in version 2.3: Extensions and extension managers are now cleaned up and removed after test runs.

    Subclasses can more easily set up default extension state, or create new extensions as needed.

    extension_mgr¶

    The extension manager owning the extension. Tests can use this to manually enable/disable the extension, if needed.

    Type:

    djblets.extensions.manager.ExtensionManager

    extension¶

    The extension instance being tested.

    Type:

    djblets.extensions.extension.Extension

    extension_class = None[source]¶

    The extension class to test.

    extension_metadata = {'Version': '1.0'}[source]¶

    Optional metadata to use for the extension information.

    extension_package_name = 'TestPackage'[source]¶

    Optional package name to use for the extension information.

    extension_enable_by_default = True[source]¶

    Whether to enable the extension by default.

    New in version 2.3.

    Type:

    bool

    default_extension_manager_cls[source]¶

    The default extension manager to use if one is not instantiated.

    This will be created only if the consuming project hasn’t already instantiated an extension manager.

    New in version 2.3.

    Type:

    type

    alias of DefaultTestsExtensionManager

    allow_existing_extension_manager = True[source]¶

    Whether to allow use of an existing registered extension manager.

    If disabled, a new extension manager will be created for the test run. This is enabled by default for backwards-compatibility.

    New in version 2.3.

    Type:

    bool

    setUp()[source]¶
    tearDown()[source]¶
    reset_extensions()[source]¶

    Unregister and clean up all extensions and extension managers.

    This will disable and unregister any extensions that have been set up using setup_extension(). It will also shut down and unregister all extension managers created during the test run.

    This is normally called when a unit test has finished. Tests can explicitly call this to reset the extension management state.

    New in version 2.3.

    scanned_extensions(extension_classes=[], extension_mgr=None)[source]¶

    Make the specified extension classes available for scanning.

    This should be called before calling ExtensionManager.load() in order to ensure the specified list of extension classes are available to be scanned.

    New in version 2.3.

    Parameters:
    • extension_classes (list, optional) –

      The list of extensions to be made available.

      Each entry can be an extension class, or a tuple of (extension_class, package_name).

      If any extension is not registered, it will be assigned a default package name of extension_package_name.

    • extension_mgr (djblets.extensions.manager.ExtensionManager, optional) – An explicit extension manager that will be used to scan, rather than the test suite’s extension_mgr attribute.

    Context:

    The provided extensions will be available for scanning.

    setup_extension(extension_cls=None, package_name=None, metadata=None, enable=True, extension_mgr=None)[source]¶

    Set up a new extension instance.

    This will construct an new extension of the provided type with the provided information.

    The extension will be registered in the extension manager, and cleaned up when the unit test has finished.

    New in version 2.3.

    Parameters:
    • extension_cls (type, optional) –

      The extension’s class.

      Defaults to extension_class.

    • package_name (unicode, optional) –

      The package name assigned as the owner of the extension.

      Defaults to extension_package_name.

    • metadata (dict, optional) –

      The extension package metadata.

      Defaults to metadata.

    • enable (bool, optional) –

      Whether to enable the extension.

      If not enabled, an instance will still be returned, but it won’t be registered as enabled in the extension manager.

    • extension_mgr (djblets.extensions.manager.ExtensionManager, optional) –

      An explicit extension manager to register this extension in.

      Defaults to the result of get_extension_manager().

    Returns:

    The extension instance, if enabling. Otherwise, None will be returned.

    Return type:

    djblets.extensions.extension.Extension

    get_extension_manager()[source]¶

    Return the extension manager used for the tests.

    Subclasses may want to override this to pick a specific extension manager, if the project uses more than one. The default behavior is to return the first registered extension manager, or create one if one is not available.

    If self.allow_existing_extension_manager is False, this will always create a new extension manager.

    Changed in version 2.3: This is now guaranteed to return an extension manager instance, and that instance is guaranteed to be cleaned up after the test has finished.

    Returns:

    The extension manager used for tests.

    Return type:

    djblets.extensions.manager.ExtensionManager

    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-2025 Beanbag, Inc. All rights reserved.

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

    On this page

    • [Top]
    • DefaultTestsExtensionManager
      • DefaultTestsExtensionManager.__annotations__
    • ExtensionTestCaseMixin
      • ExtensionTestCaseMixin.extension_mgr
      • ExtensionTestCaseMixin.extension
      • ExtensionTestCaseMixin.extension_class
      • ExtensionTestCaseMixin.extension_metadata
      • ExtensionTestCaseMixin.extension_package_name
      • ExtensionTestCaseMixin.extension_enable_by_default
      • ExtensionTestCaseMixin.default_extension_manager_cls
      • ExtensionTestCaseMixin.allow_existing_extension_manager
      • ExtensionTestCaseMixin.setUp()
      • ExtensionTestCaseMixin.tearDown()
      • ExtensionTestCaseMixin.reset_extensions()
      • ExtensionTestCaseMixin.scanned_extensions()
      • ExtensionTestCaseMixin.setup_extension()
      • ExtensionTestCaseMixin.get_extension_manager()