Python Unit Test Reporting to TeamCity
This package integrates Python with the TeamCity Continuous Integration (CI) server. It allows sending "service messages" 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.:
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:
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:
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