From 41ca0f8833499144d1f6e02e17b7d854fa7e8d5a Mon Sep 17 00:00:00 2001 From: "duanchao.bill" Date: Wed, 4 May 2022 11:11:13 +0800 Subject: [PATCH 1/3] fix: RunThriftRequest --- httprunner/step_thrift_request.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/httprunner/step_thrift_request.py b/httprunner/step_thrift_request.py index fe569032..7eef3e07 100644 --- a/httprunner/step_thrift_request.py +++ b/httprunner/step_thrift_request.py @@ -189,7 +189,7 @@ class RunThriftRequest(IStep): return self - def setup_hook(self, hook: Text, assign_var_name: Text = None) -> "RunTestCase": + def setup_hook(self, hook: Text, assign_var_name: Text = None) -> "RunThriftRequest": if assign_var_name: self.__step.setup_hooks.append({assign_var_name: hook}) else: From ba069e3d2d5f83fa10afb811a7e204e69416f662 Mon Sep 17 00:00:00 2001 From: "duanchao.bill" Date: Wed, 4 May 2022 11:51:26 +0800 Subject: [PATCH 2/3] fix: thrift --- poetry.lock | 28 ++++++++++++++++++++++++++-- pyproject.toml | 1 + 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/poetry.lock b/poetry.lock index 8c1ec1e6..2b202e54 100644 --- a/poetry.lock +++ b/poetry.lock @@ -623,7 +623,7 @@ name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" category = "main" -optional = true +optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" [package.source] @@ -669,6 +669,27 @@ type = "legacy" url = "https://pypi.tuna.tsinghua.edu.cn/simple" reference = "tsinghua" +[[package]] +name = "thrift" +version = "0.16.0" +description = "Python bindings for the Apache Thrift RPC system" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +six = ">=1.7.2" + +[package.extras] +all = ["tornado (>=4.0)", "twisted"] +tornado = ["tornado (>=4.0)"] +twisted = ["twisted"] + +[package.source] +type = "legacy" +url = "https://pypi.tuna.tsinghua.edu.cn/simple" +reference = "tsinghua" + [[package]] name = "thriftpy2" version = "0.4.14" @@ -799,7 +820,7 @@ upload = ["requests-toolbelt", "filetype"] [metadata] lock-version = "1.1" python-versions = "^3.7" -content-hash = "73bf6bfc1612775dd37dd94bb73b73d6de7a38bb3dad7c027c24f7d3d0209e62" +content-hash = "15f15916b41e180ee7567716713607183f5d8c8d30300c24dada98be454bc675" [metadata.files] allure-pytest = [ @@ -1275,6 +1296,9 @@ sqlalchemy = [ {file = "SQLAlchemy-1.4.36-cp39-cp39-win_amd64.whl", hash = "sha256:cb441ca461bf97d00877b607f132772644b623518b39ced54da433215adce691"}, {file = "SQLAlchemy-1.4.36.tar.gz", hash = "sha256:64678ac321d64a45901ef2e24725ec5e783f1f4a588305e196431447e7ace243"}, ] +thrift = [ + {file = "thrift-0.16.0.tar.gz", hash = "sha256:2b5b6488fcded21f9d312aa23c9ff6a0195d0f6ae26ddbd5ad9e3e25dfc14408"}, +] thriftpy2 = [ {file = "thriftpy2-0.4.14-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:b4aae6f6c1d8d12e63c45f68ec1a25267e7d3af1ced1e5a82cbabaaed4bcebc9"}, {file = "thriftpy2-0.4.14.tar.gz", hash = "sha256:1758ccaeb2a40d8779b50cdd3d7a3b43e8c5752f21ad0a54ded7c251d05219e8"}, diff --git a/pyproject.toml b/pyproject.toml index 75f37f82..eaa1d97b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,6 +48,7 @@ toml = "^0.10.2" sqlalchemy = "^1.4.36" cython = "^0.29.28" thriftpy2 = "^0.4.14" +thrift = "^0.16.0" [tool.poetry.extras] allure = ["allure-pytest"] # pip install "httprunner[allure]", poetry install -E allure From 1de270f089c994514b052f092ae7de538ffcdbef Mon Sep 17 00:00:00 2001 From: "duanchao.bill" Date: Wed, 4 May 2022 14:23:09 +0800 Subject: [PATCH 3/3] fix: windows not support thrift --- httprunner/__init__.py | 23 ++++++++++++++-------- httprunner/step.py | 32 ++++++++++++++++++++++++++----- httprunner/step_thrift_request.py | 4 +++- 3 files changed, 45 insertions(+), 14 deletions(-) diff --git a/httprunner/__init__.py b/httprunner/__init__.py index 6fbfbe8a..e70b5526 100644 --- a/httprunner/__init__.py +++ b/httprunner/__init__.py @@ -2,6 +2,7 @@ __version__ = "4.0.0-beta" __description__ = "One-stop solution for HTTP(S) testing." from httprunner.config import Config +import platform from httprunner.parser import parse_parameters as Parameters from httprunner.runner import HttpRunner from httprunner.step import Step @@ -12,11 +13,6 @@ from httprunner.step_sql_request import ( StepSqlRequestValidation, StepSqlRequestExtraction, ) -from httprunner.step_thrift_request import ( - RunThriftRequest, - StepThriftRequestValidation, - StepThriftRequestExtraction, -) __all__ = [ "__version__", @@ -28,9 +24,20 @@ __all__ = [ "RunSqlRequest", "StepSqlRequestValidation", "StepSqlRequestExtraction", - "RunThriftRequest", - "StepThriftRequestValidation", - "StepThriftRequestExtraction", "RunTestCase", "Parameters", ] +if platform.system() != "Windows": + from httprunner.step_thrift_request import ( + RunThriftRequest, + StepThriftRequestValidation, + StepThriftRequestExtraction, + ) + + __all__.extend( + [ + "RunThriftRequest", + "StepThriftRequestValidation", + "StepThriftRequestExtraction", + ] + ) diff --git a/httprunner/step.py b/httprunner/step.py index 75cc43dc..b0d20a9b 100644 --- a/httprunner/step.py +++ b/httprunner/step.py @@ -1,3 +1,4 @@ +import platform from typing import Union from httprunner.models import StepResult, TRequest, TStep, TestCase @@ -14,8 +15,6 @@ from httprunner.step_sql_request import ( StepSqlRequestExtraction, ) -from httprunner.step_thrift_request import RunThriftRequest,StepThriftRequestValidation,StepThriftRequestExtraction - class Step(object): def __init__( @@ -28,9 +27,6 @@ class Step(object): RunSqlRequest, StepSqlRequestValidation, StepSqlRequestExtraction, - RunThriftRequest, - StepThriftRequestValidation, - StepThriftRequestExtraction ], ): self.__step = step @@ -62,3 +58,29 @@ class Step(object): def run(self, runner: HttpRunner) -> StepResult: return self.__step.run(runner) + + +if platform.system() != "Windows": + from httprunner.step_thrift_request import ( + RunThriftRequest, + StepThriftRequestValidation, + StepThriftRequestExtraction, + ) + + class Step(Step): + def __init__( + self, + step: Union[ + StepRequestValidation, + StepRequestExtraction, + RequestWithOptionalArgs, + StepRefCase, + RunSqlRequest, + StepSqlRequestValidation, + StepSqlRequestExtraction, + RunThriftRequest, + StepThriftRequestValidation, + StepThriftRequestExtraction, + ], + ): + super().__init__(step) diff --git a/httprunner/step_thrift_request.py b/httprunner/step_thrift_request.py index 7eef3e07..919df130 100644 --- a/httprunner/step_thrift_request.py +++ b/httprunner/step_thrift_request.py @@ -189,7 +189,9 @@ class RunThriftRequest(IStep): return self - def setup_hook(self, hook: Text, assign_var_name: Text = None) -> "RunThriftRequest": + def setup_hook( + self, hook: Text, assign_var_name: Text = None + ) -> "RunThriftRequest": if assign_var_name: self.__step.setup_hooks.append({assign_var_name: hook}) else: