• 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.testing.testrunners
  • 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.testing.testrunners¶

    class TestRunner(nose_options: Optional[List[str]] = None, test_packages: Optional[List[str]] = None, needs_collect_static: Optional[bool] = None, use_pytest: bool = False, pytest_options: Optional[List[str]] = None, *args, **kwargs)[source]¶

    Bases: DiscoverRunner

    Test runner for standard Djblets-based projects.

    This class provides all the common setup for settings, databases, and directories that are generally needed by Django projects using Djblets. Much of the behavior can be overridden by subclasses.

    nose is used to run the test suites. The options can be configured through nose_options.

    This can be subclassed in order to set the settings for the test run, or it can be instantiated with those settings passed in as keyword arguments.

    __init__(nose_options: Optional[List[str]] = None, test_packages: Optional[List[str]] = None, needs_collect_static: Optional[bool] = None, use_pytest: bool = False, pytest_options: Optional[List[str]] = None, *args, **kwargs) → None[source]¶

    Initialize the test runner.

    The caller can override any of the options otherwise defined on the class.

    Changed in version 4.0: Added the use_pytest and pytest_options arguments.

    Parameters:
    • nose_options (list, optional) – A list of options used for nose. See nose_options.

    • test_packages (list, optional) – A list of Python package/module names to test. See test_packages.

    • needs_collect_static (bool, optional) – Whether or not collectstatic needs to be run before tests. See needs_collect_static.

    • use_pytest (bool, optional) –

      Whether to run the tests using Pytest instead of Nose. This will become the default in Djblets 5.0.

      New in version 4.0.

    • pytest_options (list, optional) –

      A list of options used for pytest. See pytest_options.

      New in version 4.0.

    nose_options = ['-v', '--match=^test', '--with-id', '--with-doctest', '--doctest-extension=.txt'][source]¶

    The options used for nose.

    This is a list of command line arguments that would be passed to nosetests.

    test_packages: List[str] = []¶

    A list of Python package/module names to test.

    needs_collect_static = True[source]¶

    Whether or not collectstatic needs to be run before tests.

    use_pytest: bool¶

    Whether to run tests with Pytest instead of nose.

    New in version 4.0.

    pytest_options: List[str] = []¶

    The options used for pytest.

    This is a list of command line arguments that would be passed to pytest.

    New in version 4.0.

    setup_test_environment(*args, **kwargs)[source]¶

    Set up an environment for the unit tests.

    This will handle setting all the default settings for a Djblets-based project and will create the directory structure needed for the tests in a temp directory.

    Subclasses can override this to provide additional setup logic.

    This must be called before run_tests().

    Parameters:
    • *args (tuple) – Additional positional arguments to pass to Django’s version of this method.

    • **kwargs (dict) – Additional keyword arguments to pass to Django’s version of this method.

    setup_nose_environment()[source]¶

    Set up the test environment when using nose.

    teardown_test_environment(*args, **kwargs)[source]¶

    Tear down the environment for the unit tests.

    This will clean up the temp directory structure.It must be called after run_tests().

    Parameters:
    • *args (tuple) – Additional positional arguments to pass to Django’s version of this method.

    • **kwargs (dict) – Additional keyword arguments to pass to Django’s version of this method.

    __annotations__ = {'pytest_options': typing.List[str], 'test_packages': typing.List[str], 'use_pytest': <class 'bool'>}¶
    run_tests(test_labels=[], argv=None, *args, **kwargs)[source]¶

    Run the test suite.

    Parameters:
    • test_labels (list of unicode, optional) – Specific tests to run.

    • argv (list of unicode, optional) – Additional arguments for nose. If not specified, sys.argv is used.

    • *args (tuple, unused) – Unused additional positional arguments.

    • **kwargs (dict, unused) – Unused additional keyword arguments.

    Returns:

    The exit code. 0 means all tests passed, while 1 means there were failures.

    Return type:

    int

    setup_dirs()[source]¶

    Set up directories to create and use.

    This can return one or more directory paths that need to be created before the tests can be run. It may also store settings pointing to those paths.

    This is not responsible for creating the directories. Any returned paths will be created automatically.

    Returns:

    A list of directory paths to create.

    Return type:

    list of unicode

    run_nose()[source]¶

    Run the unit tests using nose.

    This will use nose to run the tests, storing the result.

    Returns:

    The result from the run.

    Return type:

    nose.core.TestProgram

    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]
    • TestRunner
      • TestRunner.__init__()
      • TestRunner.nose_options
      • TestRunner.test_packages
      • TestRunner.needs_collect_static
      • TestRunner.use_pytest
      • TestRunner.pytest_options
      • TestRunner.setup_test_environment()
      • TestRunner.setup_nose_environment()
      • TestRunner.teardown_test_environment()
      • TestRunner.__annotations__
      • TestRunner.run_tests()
      • TestRunner.setup_dirs()
      • TestRunner.run_nose()