From 5b245fec0dc5434b595127f0b53a063d0a8fc8b7 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Thu, 4 Jun 2020 11:12:47 +0800 Subject: [PATCH] feat: add sentry sdk --- docs/CHANGELOG.md | 10 +++++++++ httprunner/cli.py | 5 +++++ httprunner/ext/har2case/__init__.py | 2 ++ httprunner/scaffold.py | 2 ++ httprunner/utils.py | 11 ++++++++++ poetry.lock | 32 ++++++++++++++++++++++++++++- pyproject.toml | 1 + 7 files changed, 62 insertions(+), 1 deletion(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 5ad8d360..4fca7a0c 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,15 @@ # Release History +## 3.0.7 (2020-06-04) + +**Added** + +- feat: add sentry sdk + +**Changed** + +- change: add httprunner version in generated pytest file + ## 3.0.7 (2020-06-03) **Added** diff --git a/httprunner/cli.py b/httprunner/cli.py index 5297074d..0e2b7ae2 100644 --- a/httprunner/cli.py +++ b/httprunner/cli.py @@ -4,12 +4,16 @@ import sys import pytest from loguru import logger +from sentry_sdk import capture_message from httprunner import __description__, __version__ from httprunner.compat import ensure_cli_args from httprunner.ext.har2case import init_har2case_parser, main_har2case from httprunner.make import init_make_parser, main_make from httprunner.scaffold import init_parser_scaffold, main_scaffold +from httprunner.utils import init_sentry_sdk + +init_sentry_sdk() def init_parser_run(subparsers): @@ -20,6 +24,7 @@ def init_parser_run(subparsers): def main_run(extra_args): + capture_message("start to run") # keep compatibility with v2 extra_args = ensure_cli_args(extra_args) diff --git a/httprunner/ext/har2case/__init__.py b/httprunner/ext/har2case/__init__.py index ade2ac36..3e5c21c4 100644 --- a/httprunner/ext/har2case/__init__.py +++ b/httprunner/ext/har2case/__init__.py @@ -12,6 +12,7 @@ import os import sys from loguru import logger +from sentry_sdk import capture_message from httprunner.ext.har2case.core import HarParser @@ -69,6 +70,7 @@ def main_har2case(args): else: output_file_type = "pytest" + capture_message(f"har2case {output_file_type}") HarParser(har_source_file, args.filter, args.exclude).gen_testcase(output_file_type) return 0 diff --git a/httprunner/scaffold.py b/httprunner/scaffold.py index bf48893f..19450d6e 100644 --- a/httprunner/scaffold.py +++ b/httprunner/scaffold.py @@ -2,6 +2,7 @@ import os.path import sys from loguru import logger +from sentry_sdk import capture_message def init_parser_scaffold(subparsers): @@ -140,5 +141,6 @@ def sleep(n_secs): def main_scaffold(args): + capture_message("startproject with scaffold") create_scaffold(args.project_name) sys.exit(0) diff --git a/httprunner/utils.py b/httprunner/utils.py index d035b3d6..3b206eea 100644 --- a/httprunner/utils.py +++ b/httprunner/utils.py @@ -2,14 +2,25 @@ import collections import json import os.path import platform +import uuid from typing import Dict, List, Any +import sentry_sdk from loguru import logger from httprunner import __version__ from httprunner import exceptions +def init_sentry_sdk(): + sentry_sdk.init( + dsn="https://460e31339bcb428c879aafa6a2e78098@sentry.io/5263855", + release="httprunner@{}".format(__version__), + ) + with sentry_sdk.configure_scope() as scope: + scope.set_user({"id": uuid.getnode()}) + + def set_os_environ(variables_mapping): """ set variables mapping to os.environ """ diff --git a/poetry.lock b/poetry.lock index 39a6f593..26dd749a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -451,6 +451,32 @@ version = "0.9.1" [package.dependencies] requests = ">=2.0.1,<3.0.0" +[[package]] +category = "main" +description = "Python client for Sentry (https://getsentry.com)" +name = "sentry-sdk" +optional = false +python-versions = "*" +version = "0.14.4" + +[package.dependencies] +certifi = "*" +urllib3 = ">=1.10.0" + +[package.extras] +aiohttp = ["aiohttp (>=3.5)"] +beam = ["beam (>=2.12)"] +bottle = ["bottle (>=0.12.13)"] +celery = ["celery (>=3)"] +django = ["django (>=1.8)"] +falcon = ["falcon (>=1.4)"] +flask = ["flask (>=0.11)", "blinker (>=1.1)"] +pyspark = ["pyspark (>=2.4.4)"] +rq = ["rq (>=0.6)"] +sanic = ["sanic (>=0.8)"] +sqlalchemy = ["sqlalchemy (>=1.2)"] +tornado = ["tornado (>=5)"] + [[package]] category = "main" description = "Python 2 and 3 compatibility utilities" @@ -572,7 +598,7 @@ allure = ["allure-pytest"] upload = ["requests-toolbelt", "filetype"] [metadata] -content-hash = "3b5147c8c95480574c9eaa8f035c536cf18535766f60f768d2e714b257511dae" +content-hash = "581cacf33c8afe330e5b6a965d5e16f6266718249cbdfed0d080b7536c5c4590" python-versions = "^3.6" [metadata.files] @@ -850,6 +876,10 @@ requests-toolbelt = [ {file = "requests-toolbelt-0.9.1.tar.gz", hash = "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0"}, {file = "requests_toolbelt-0.9.1-py2.py3-none-any.whl", hash = "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f"}, ] +sentry-sdk = [ + {file = "sentry-sdk-0.14.4.tar.gz", hash = "sha256:0e5e947d0f7a969314aa23669a94a9712be5a688ff069ff7b9fc36c66adc160c"}, + {file = "sentry_sdk-0.14.4-py2.py3-none-any.whl", hash = "sha256:799a8bf76b012e3030a881be00e97bc0b922ce35dde699c6537122b751d80e2c"}, +] six = [ {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"}, {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"}, diff --git a/pyproject.toml b/pyproject.toml index 083c1725..7db3053d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,6 +38,7 @@ jmespath = "^0.9.5" black = "^19.10b0" pytest = "^5.4.2" pytest-html = "^2.1.1" +sentry-sdk = "^0.14.4" allure-pytest = {version = "^2.8.16", optional = true} requests-toolbelt = {version = "^0.9.1", optional = true} filetype = {version = "^1.0.7", optional = true}