Skip to main content

Buildkite Test Engine collector

Project description

Buildkite Test Collector for Python

The official Python adapter for Buildkite Test Engine which collects information about your tests.

Supported python versions: >=3.9

Supported test frameworks: pytest.

📦 Supported CI systems: Buildkite, GitHub Actions, CircleCI, and others via the BUILDKITE_ANALYTICS_* environment variables.

👉 Installing

  1. Create a test suite, and copy the API token that it gives you.

  2. Add buildkite-test-collector to your project dependencies

Using uv:

uv add --dev buildkite-test-collector

Or add it to your pyproject.toml:

[project.optional-dependencies]
dev = [
    "buildkite-test-collector"
]
  1. Set up your API token

Add the BUILDKITE_ANALYTICS_TOKEN environment variable to your build system's environment.

  1. Run your tests

Run your tests like normal. Note that we attempt to detect the presence of several common CI environments, however if this fails you can set the CI environment variable to any value and it will work.

uv run pytest
  1. Verify that it works

If all is well, you should see the test run in the Test Engine section of the Buildkite dashboard.

🏷️ Filtering Tests by Tags

You can filter which tests to run based on execution tags using the --tag-filters option.

First, mark your tests with execution tags:

import pytest

@pytest.mark.execution_tag("color", "red")
def test_red_feature():
    assert True

@pytest.mark.execution_tag("color", "blue")
def test_blue_feature():
    assert True

Then filter tests by tag using the --tag-filters option with key:value format:

# Run only tests tagged with color:red
pytest --tag-filters "color:red"

# Run only tests tagged with color:blue
pytest --tag-filters "color:blue"

Note: The --tag-filters option performs exact key:value matching. Only tests with the specified tag will be selected.

🎢 Tracing

Buildkite Test Engine has support for tracing potentially slow operations within your tests, and can collect span data of four types: http, sql, sleep and annotations. This is documented as part of our public JSON API so anyone can instrument any code to send this data.

This library supports the ability to transmit tracing information to your Test Engine output by using the new spans pytest fixture. See the SpanCollector documentation for more information.

You may also need to manually capture the data you wish to trace for your use case. For examples of how we've done this in our Ruby test collector, see:

Note: the Ruby test collector is the only Test Engine collector that automatically captures and transmits span data. This Python collector can transmit information, but data capture must be done manually at this time.

🔜 Roadmap

See the GitHub 'enhancement' issues for planned features. Pull requests are always welcome, and we’ll give you feedback and guidance if you choose to contribute 💚

⚒ Developing

After cloning the repository, install uv if you haven't already:

curl -LsSf https://astral.sh/uv/install.sh | sh

Then install the dependencies:

uv sync --all-extras

And run the tests:

uv run pytest

Useful resources for developing collectors include the Buildkite Test Engine docs and the RSpec and Minitest collectors.

👩‍💻 Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/buildkite/test-collector-python

🚀 Releasing

  1. Open a new PR bumping the version number in pyproject.toml, make sure the PR title contains [release].
  2. Get the PR approved and merged, this will trigger the release pipeline.
  3. (Optional) In the event of step 3 failure, run .buildkite/steps/release-pypi locally with your own credentials.
  4. Create a new github release for prosperity, you can create a tag as you create the release.

📜 License

The package is available as open source under the terms of the MIT License.

🤙 Thanks

Thanks to the folks at Alembic for building and maintaining this package.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

buildkite_test_collector-1.5.0.tar.gz (29.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

buildkite_test_collector-1.5.0-py3-none-any.whl (20.3 kB view details)

Uploaded Python 3

File details

Details for the file buildkite_test_collector-1.5.0.tar.gz.

File metadata

  • Download URL: buildkite_test_collector-1.5.0.tar.gz
  • Upload date:
  • Size: 29.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for buildkite_test_collector-1.5.0.tar.gz
Algorithm Hash digest
SHA256 b514c983c46f5b00d2b7dbec395e1119c3031ad05fa28e6743db8e3d42f2e5f2
MD5 62577546a0874825bd8d3818b71aedcb
BLAKE2b-256 0b39058ddf28d54695b765cadd20156d8b8092c1f7875998d213257f2b5e1b97

See more details on using hashes here.

File details

Details for the file buildkite_test_collector-1.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for buildkite_test_collector-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7e706797e704a9a241bf814e7a0687325674f12f69953d49af0a74a20d2d1da1
MD5 b9db890ad9809a80ab95e63e18cf8dbb
BLAKE2b-256 4c2b10058a7f1989ccae11a889f7999b6a516f9ed28d7cc42aea99712287d1bb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page