向sentry.io报告片状测试的pytest插件

pytest-sentr的Python项目详细描述


https://travis-ci.com/untitaker/pytest-sentry.svg?branch=master

pytest-sentry是发送错误的pytest插件 向Sentry报告片状但最终未完全破坏的测试。

什么和为什么

假设你有一个测试套件,里面有一些不稳定的测试,这些测试会随机破坏你的 由于网络问题、比赛条件或其他您不知道的问题而生成的CI 想立即修复。已知的解决方法是重试这些测试 自动,例如使用pytest-rerunfailures

像这样的插件的一个问题是它们只是隐藏了 测试套件甚至其他代码。毕竟你的ci构建是绿色的,你的代码是 可能大部分时间都有效。

Pytest哨兵试图通过跟踪片状测试使这个选择更容易一点 在与生成状态分离的位置失败。哨兵已经是 很好的选择,可以监视所有类型的错误,无论是否重要,在 生产,所以我们也尝试在测试套件中使用它。

如何

先决条件是您已经使用了pytestpytest-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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spark sample()函数是否复制数据?   java如何在API中返回单例列表?   java我可以生成提供输入/输出的哈希函数吗?   如何“使用MATLAB或JAVA”从文本文件中读取数字并将其保存在数组中?   java如何将十进制转换为十六进制?   JavaPostXML文件   java XStream如何在XML中不存在带注释的字段时引发异常   java Tomcat启动批处理问题   java AccessControlException与同一代码库中的小程序类   java如何将长本地时间戳转换为字符串UTC时间戳   java在同一个JavaVM中有多个沙盒   改进LDAP的Java代码   拖放后未附加到DOM的java元素   java通过socket发送压缩数据