fix: codeview

This commit is contained in:
duanchao.bill
2022-05-06 22:37:04 +08:00
parent 1de270f089
commit 654edabe78
7 changed files with 72 additions and 116 deletions

View File

@@ -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",
]
)

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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"]}:'

View File

@@ -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"],

View File

@@ -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",