From 654edabe782662ae59c605ac3beff60b2c467f18 Mon Sep 17 00:00:00 2001 From: "duanchao.bill" Date: Fri, 6 May 2022 22:37:04 +0800 Subject: [PATCH] fix: codeview --- httprunner/__init__.py | 28 +++++------- httprunner/models.py | 20 ++++----- httprunner/runner.py | 4 +- httprunner/step.py | 71 +++++------------------------- httprunner/step_sql_request.py | 3 +- httprunner/step_thrift_request.py | 19 +++++--- httprunner/thrift/thrift_client.py | 43 +++++++++--------- 7 files changed, 72 insertions(+), 116 deletions(-) diff --git a/httprunner/__init__.py b/httprunner/__init__.py index e70b5526..d397cfae 100644 --- a/httprunner/__init__.py +++ b/httprunner/__init__.py @@ -1,17 +1,22 @@ __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 from httprunner.step_request import RunRequest -from httprunner.step_testcase import RunTestCase from httprunner.step_sql_request import ( RunSqlRequest, - StepSqlRequestValidation, StepSqlRequestExtraction, + StepSqlRequestValidation, +) +from httprunner.step_testcase import RunTestCase +from httprunner.step_thrift_request import ( + RunThriftRequest, + StepThriftRequestExtraction, + StepThriftRequestValidation, ) __all__ = [ @@ -26,18 +31,7 @@ __all__ = [ "StepSqlRequestExtraction", "RunTestCase", "Parameters", + "RunThriftRequest", + "StepThriftRequestValidation", + "StepThriftRequestExtraction", ] -if platform.system() != "Windows": - from httprunner.step_thrift_request import ( - RunThriftRequest, - StepThriftRequestValidation, - StepThriftRequestExtraction, - ) - - __all__.extend( - [ - "RunThriftRequest", - "StepThriftRequestValidation", - "StepThriftRequestExtraction", - ] - ) diff --git a/httprunner/models.py b/httprunner/models.py index 487371fe..7994240c 100644 --- a/httprunner/models.py +++ b/httprunner/models.py @@ -29,17 +29,17 @@ class MethodEnum(Text, Enum): class ProtoType(Enum): - pBinary = 1 - pCyBinary = 2 - pCompact = 3 - pJson = 4 + Binary = 1 + CyBinary = 2 + Compact = 3 + Json = 4 class TransType(Enum): - tBuffered = 1 - tCyBuffered = 2 - tFramed = 3 - tCyFramed = 4 + Buffered = 1 + CyBuffered = 2 + Framed = 3 + CyFramed = 4 # configs for thrift rpc @@ -56,8 +56,8 @@ class TConfigThrift(BaseModel): ip: Text = "127.0.0.1" port: int = 9000 service_name: Text = None - proto_type: ProtoType = ProtoType.pBinary - trans_type: TransType = TransType.tBuffered + proto_type: ProtoType = ProtoType.Binary + trans_type: TransType = TransType.Buffered # configs for db diff --git a/httprunner/runner.py b/httprunner/runner.py index 558a4fa9..28b1022d 100644 --- a/httprunner/runner.py +++ b/httprunner/runner.py @@ -91,9 +91,11 @@ class SessionRunner(object): def with_thrift_client(self, thrift_client) -> "SessionRunner": self.thrift_client = thrift_client + return self - def with_db_engine(self, db_engine): + def with_db_engine(self, db_engine) -> "SessionRunner": self.db_engine = db_engine + return self def __parse_config(self, param: Dict = None) -> None: # parse config variables diff --git a/httprunner/step.py b/httprunner/step.py index b0d20a9b..4e3edc12 100644 --- a/httprunner/step.py +++ b/httprunner/step.py @@ -1,18 +1,20 @@ -import platform from typing import Union -from httprunner.models import StepResult, TRequest, TStep, TestCase -from httprunner.runner import HttpRunner from httprunner.step_request import ( RequestWithOptionalArgs, StepRequestExtraction, StepRequestValidation, ) -from httprunner.step_testcase import StepRefCase from httprunner.step_sql_request import ( RunSqlRequest, - StepSqlRequestValidation, StepSqlRequestExtraction, + StepSqlRequestValidation, +) +from httprunner.step_testcase import StepRefCase +from httprunner.step_thrift_request import ( + RunThriftRequest, + StepThriftRequestExtraction, + StepThriftRequestValidation, ) @@ -27,60 +29,9 @@ class Step(object): RunSqlRequest, StepSqlRequestValidation, StepSqlRequestExtraction, + RunThriftRequest, + StepThriftRequestValidation, + StepThriftRequestExtraction, ], ): - self.__step = step - - @property - def request(self) -> TRequest: - return self.__step.struct().request - - @property - def testcase(self) -> TestCase: - return self.__step.struct().testcase - - @property - def retry_times(self) -> int: - return self.__step.struct().retry_times - - @property - def retry_interval(self) -> int: - return self.__step.struct().retry_interval - - def struct(self) -> TStep: - return self.__step.struct() - - def name(self) -> str: - return self.__step.name() - - def type(self) -> str: - return self.__step.type() - - 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) + super().__init__(step) diff --git a/httprunner/step_sql_request.py b/httprunner/step_sql_request.py index 7851a3be..c7032fae 100644 --- a/httprunner/step_sql_request.py +++ b/httprunner/step_sql_request.py @@ -15,7 +15,6 @@ from httprunner.step_request import ( StepRequestExtraction, StepRequestValidation, ) -from httprunner.database.engine import DBEngine from httprunner.exceptions import SqlMethodNotSupport @@ -52,6 +51,8 @@ def run_step_sql_request(runner: HttpRunner, step: TStep) -> StepResult: ) if not runner.db_engine: + from httprunner.database.engine import DBEngine + runner.db_engine = DBEngine( f'mysql+pymysql://{parsed_request_dict["db_config"]["user"]}:' f'{parsed_request_dict["db_config"]["password"]}@{parsed_request_dict["db_config"]["ip"]}:' diff --git a/httprunner/step_thrift_request.py b/httprunner/step_thrift_request.py index 919df130..63acdd5d 100644 --- a/httprunner/step_thrift_request.py +++ b/httprunner/step_thrift_request.py @@ -1,21 +1,26 @@ # -*- coding: utf-8 -*- import time from typing import Text, Union + from loguru import logger from httprunner import utils from httprunner.exceptions import ValidationFailure -from httprunner.models import IStep, StepResult, TStep, ProtoType, TransType +from httprunner.models import ( + IStep, + ProtoType, + StepResult, + TStep, + TThriftRequest, + TransType, +) +from httprunner.response import ThriftResponseObject from httprunner.runner import HttpRunner from httprunner.step_request import ( - call_hooks, StepRequestExtraction, StepRequestValidation, + call_hooks, ) -from httprunner.models import TThriftRequest -from httprunner.response import ThriftResponseObject - -from httprunner.thrift.thrift_client import ThriftClient def run_step_thrift_request(runner: HttpRunner, step: TStep) -> StepResult: @@ -71,6 +76,8 @@ def run_step_thrift_request(runner: HttpRunner, step: TStep) -> StepResult: if not runner.thrift_client: runner.thrift_client = parsed_request_dict["thrift_client"] if not runner.thrift_client: + from httprunner.thrift.thrift_client import ThriftClient + runner.thrift_client = ThriftClient( thrift_file=parsed_request_dict["idl_path"], service_name=parsed_request_dict["service_name"], diff --git a/httprunner/thrift/thrift_client.py b/httprunner/thrift/thrift_client.py index 59cd2d5f..13ad6f30 100644 --- a/httprunner/thrift/thrift_client.py +++ b/httprunner/thrift/thrift_client.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- from __future__ import absolute_import +import platform import enum import json -from loguru import logger import thriftpy2 +from loguru import logger from thriftpy2.protocol import ( TBinaryProtocolFactory, TCompactProtocolFactory, @@ -18,23 +19,22 @@ from thriftpy2.transport import ( TCyFramedTransportFactory, TFramedTransportFactory, ) -from thriftpy2.utils import deserialize -from httprunner.thrift.data_convertor import json2thrift, thrift2json, thrift2dict +from httprunner.thrift.data_convertor import json2thrift, thrift2dict class ProtoType(enum.Enum): - pBinary = 1 - pCyBinary = 2 - pCompact = 3 - pJson = 4 + Binary = 1 + CyBinary = 2 + Compact = 3 + Json = 4 class TransType(enum.Enum): - tBuffered = 1 - tCyBuffered = 2 - tFramed = 3 - tCyFramed = 4 + Buffered = 1 + CyBuffered = 2 + Framed = 3 + CyFramed = 4 class RequestFormat(enum.Enum): @@ -43,24 +43,24 @@ class RequestFormat(enum.Enum): def get_proto_factory(proto_type): - if proto_type == ProtoType.pBinary: + if proto_type == ProtoType.Binary: return TBinaryProtocolFactory() - if proto_type == ProtoType.pCyBinary: + if proto_type == ProtoType.CyBinary: return TCyBinaryProtocolFactory() - if proto_type == ProtoType.pCompact: + if proto_type == ProtoType.Compact: return TCompactProtocolFactory() - if proto_type == ProtoType.pJson: + if proto_type == ProtoType.Json: return TJSONProtocolFactory() def get_trans_factory(trans_type): - if trans_type == TransType.tBuffered: + if trans_type == TransType.Buffered: return TBufferedTransportFactory() - if trans_type == TransType.tCyBuffered: + if trans_type == TransType.CyBuffered: return TCyBufferedTransportFactory() - if trans_type == TransType.tFramed: + if trans_type == TransType.Framed: return TFramedTransportFactory() - if trans_type == TransType.tCyFramed: + if trans_type == TransType.CyFramed: return TCyFramedTransportFactory() @@ -73,8 +73,8 @@ class ThriftClient(object): port, include_dirs=None, timeout=3000, - proto_type=ProtoType.pCyBinary, - trans_type=TransType.tCyBuffered, + proto_type=ProtoType.CyBinary, + trans_type=TransType.CyBuffered, ): self.thrift_file = thrift_file self.include_dirs = include_dirs @@ -84,6 +84,7 @@ class ThriftClient(object): self.timeout = timeout self.proto_type = proto_type self.trans_type = trans_type + assert platform.system() != "Windows", "thrift not support Windows for now" try: logger.debug( "init thrift module: thrift_file=%s, module_name=%s",