向sentry.io报告片状测试的pytest插件
pytest-sentr的Python项目详细描述
pytest-sentry是发送错误的pytest插件 向Sentry报告片状但最终未完全破坏的测试。
什么和为什么
假设你有一个测试套件,里面有一些不稳定的测试,这些测试会随机破坏你的 由于网络问题、比赛条件或其他您不知道的问题而生成的CI 想立即修复。已知的解决方法是重试这些测试 自动,例如使用pytest-rerunfailures。
像这样的插件的一个问题是它们只是隐藏了 测试套件甚至其他代码。毕竟你的ci构建是绿色的,你的代码是 可能大部分时间都有效。
Pytest哨兵试图通过跟踪片状测试使这个选择更容易一点 在与生成状态分离的位置失败。哨兵已经是 很好的选择,可以监视所有类型的错误,无论是否重要,在 生产,所以我们也尝试在测试套件中使用它。
如何
先决条件是您已经使用了pytest和 pytest-rerunfailures在ci中。现在安装pytest-sentry并设置 PYTEST_SENTRY_DSN环境变量,用于新哨兵项目的DSN。
现在,通过重试测试“修复”的每个测试失败都会报告给 哨兵,但还是不断词。一贯失败的测试不会 报道。
高级选项
pytest-sentry支持将测试标记为使用不同的DSN、客户端或 每个测试的集线器。您可以使用此选项为^{tt7}提供自定义选项$ 来自Sentry SDK for Python:
的对象import random import pytest from sentry_sdk import Hub from pytest_sentry import Client @pytest.mark.sentry_client(None) def test_no_sentry(): # Even though flaky, this test never gets reported to sentry assert random.random() > 0.5 @pytest.mark.sentry_client("MY NEW DSN") def test_custom_dsn(): # Use a different DSN to report errors for this one assert random.random() > 0.5 # Other invocations: @pytest.mark.sentry_client(Client("CUSTOM DSN")) @pytest.mark.sentry_client(lambda: Client("CUSTOM DSN")) @pytest.mark.sentry_client(Hub(Client("CUSTOM DSN")))
由pytest-sentry公开的Client类只有不同的默认值 整合。它会禁用一些错误捕获集成以避免 向项目中发送随机预期错误。
许可证
根据麻省理工学院授权,请参见LICENSE。