JetBrains / teamcity-messages

Python Unit Test Reporting to TeamCity
https://pypi.python.org/pypi/teamcity-messages
Apache License 2.0
138 stars 81 forks source link

Python Unit Test Reporting to TeamCity

| |jb_project| |license| |pypi_version| | |versions| |teamcity_ci|

This package integrates Python with the TeamCity <http://www.jetbrains.com/teamcity/> Continuous Integration (CI) server. It allows sending "service messages" <https://confluence.jetbrains.com/display/TCDL/Build+Script+Interaction+with+TeamCity> from Python code. Additionally, it provides integration with the following testing frameworks and tools:

Installation

Install using pip:

::

pip install teamcity-messages

or from source:

::

python setup.py install

Usage

This package uses service messages to report the build status to TeamCity. See https://confluence.jetbrains.com/display/TCDL/Build+Script+Interaction+with+TeamCity for more details

unittest


If you wish to use the Python default unittest framework, you should
modify the Test runner, e.g.:

.. code:: python

    import unittest
    from teamcity import is_running_under_teamcity
    from teamcity.unittestpy import TeamcityTestRunner

    class Test(unittest.TestCase):
        ...

    if __name__ == '__main__':
        if is_running_under_teamcity():
            runner = TeamcityTestRunner()
        else:
            runner = unittest.TextTestRunner()
        unittest.main(testRunner=runner)

See ``examples/simple.py`` for a full example.

If you are used to running unittest from the command line, instead of
using ``python -m unittest``, you could use
``python -m teamcity.unittestpy``.

nose

Test status reporting is enabled automatically under TeamCity build.

py.test


Test status reporting is enabled automatically under TeamCity build.

Django

For Django 1.6+: Use the TeamcityDjangoRunner runner instead of the default DiscoverRunner by changing the following setting in your settings.py:

.. code:: python

TEST_RUNNER = "teamcity.django.TeamcityDjangoRunner"

If you are using another test runner, you should override the run_suite method or use the DiscoverRunner.test_runner property introduced in Django 1.7.

flake8


Test status reporting is enabled automatically under TeamCity build.

PyLint

Add --output-format=teamcity.pylint_reporter.TeamCityReporter to the pylint command line.

tox


Pass TEAMCITY_VERSION environment variable inside your test virtenv.
TEAMCITY_VERSION environment variable exists during build on TeamCity.
teamcity-messages uses it in order to enable reporting to TeamCity.

::

    [testenv]
    passenv = TEAMCITY_VERSION

Twisted trial

Add --reporter=teamcity option to trial command line

Behave



For Behave 1.2.6:

.. code:: python

    from behave.formatter import _registry
    from behave.configuration import Configuration
    from behave.runner import Runner
    from teamcity.jb_behave_formatter import TeamcityFormatter

    _registry.register_as("TeamcityFormatter", TeamcityFormatter)
    configuration = Configuration()
    configuration.format = ["TeamcityFormatter"]
    configuration.stdout_capture = False
    configuration.stderr_capture = False
    Runner(configuration).run()

Python version compatibility
----------------------------

See https://pypi.org/project/teamcity-messages for Python version compatibility

Contact information
-------------------

https://github.com/JetBrains/teamcity-messages

TeamCity support: http://www.jetbrains.com/support/teamcity

License
-------

Apache, version 2.0 http://www.apache.org/licenses/LICENSE-2.0

.. |jb_project| image:: http://jb.gg/badges/official.svg
   :target: https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub
   :alt: Official JetBrains project
.. |license| image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg
   :target: https://opensource.org/licenses/Apache-2.0
   :alt: Apache 2.0 license
.. |versions| image:: https://img.shields.io/pypi/pyversions/teamcity-messages.svg
   :target: https://pypi.python.org/pypi/teamcity-messages
   :alt: Python versions supported
.. |pypi_version| image:: https://badge.fury.io/py/teamcity-messages.svg
   :target: https://pypi.python.org/pypi/teamcity-messages
   :alt: PyPI version
.. |teamcity_ci| image:: https://teamcity.jetbrains.com/guestAuth/app/rest/builds/buildType:(id:TeamCityPluginsByJetBrains_TeamCityPythonReporter_Build)/statusIcon.svg
   :target: https://teamcity.jetbrains.com/viewType.html?buildTypeId=TeamCityPluginsByJetBrains_TeamCityPythonReporter_Build
   :alt: TeamCity Build Status