Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions testbase/testcase.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
import six

from testbase.assertion import AssertionRewriter
from testbase.util import Singleton, ThreadGroupLocal, ThreadGroupScope, smart_text, get_last_frame_stack, getmembers
from testbase.util import Singleton, ThreadGroupLocal, ThreadGroupScope, smart_text, get_last_frame_stack, getmembers, translate2type
from testbase.testresult import EnumLogLevel, TestResultCollection, TestResultType
from testbase.conf import settings
from testbase.retry import Retry
Expand Down Expand Up @@ -415,7 +415,7 @@ def assert_types(self):
else:
if not isinstance(value, define_type):
# 如果期望类型是float,int型的数据, 转换为字符串,判断是否是数值型数据,如果是强制转换为数值型数据
ret = self.translate2type(define_type, value)
ret = translate2type(define_type, value)
if ret is not None:
self.__params[c_name] = ret
else:
Expand Down
18 changes: 18 additions & 0 deletions testbase/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -732,5 +732,23 @@ def getmembers(object, predicate=None):
return results


def translate2type(dst_type, value):
'''仅针对float、int'''
if dst_type not in [float, int]:
return
text = str(value)
float_regex = re.compile(r'^[+-]?((\d+(\.\d*)?)|\.\d+)([eE][+-]?[0-9]+)?$')
if float_regex.match(text):
if dst_type is float:
return float(text)
else:
_float_value = float(text)
_int_value = int(_float_value)
if _float_value != _int_value:
return None
return _int_value
return


if __name__ == "__main__":
pass
5 changes: 5 additions & 0 deletions tests/test_testbase/test_testcase.py
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,11 @@ def test_parameter_rewrite(self):
self.assertEqual(tc.test, 200)
self.assertEqual(tc.test1, 1000)

tc1 = ParamTest(attrs={"test": 200, "test1": "1000"})
tc1.debug_run()
self.assertEqual(tc1.test, 200)
self.assertEqual(tc1.test1, 1000)

def test_parameter_without_add_params(self):
from tests.sampletest.paramtest import ParamTestWithoutAddParams
with modify_settings(QTAF_PARAM_MODE=True):
Expand Down