mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-12 11:29:48 +08:00
relocalte extract_variables
This commit is contained in:
@@ -177,7 +177,7 @@ class Context(object):
|
||||
# 5, regex string, e.g. "LB[\d]*(.*)RB[\d]*"
|
||||
|
||||
if isinstance(check_item, (dict, list)) \
|
||||
or testcase.extract_variables(check_item) \
|
||||
or parser.extract_variables(check_item) \
|
||||
or testcase.extract_functions(check_item):
|
||||
# format 1/2/3
|
||||
check_value = self.eval_content(check_item)
|
||||
|
||||
@@ -3,6 +3,7 @@ import re
|
||||
|
||||
from httprunner import exceptions
|
||||
|
||||
variable_regexp = r"\$([\w_]+)"
|
||||
function_regexp_compile = re.compile(r"^([\w_]+)\(([\$\w\.\-_ =,]*)\)$")
|
||||
|
||||
|
||||
@@ -22,6 +23,23 @@ def parse_string_value(str_value):
|
||||
return str_value
|
||||
|
||||
|
||||
def extract_variables(content):
|
||||
""" extract all variable names from content, which is in format $variable
|
||||
@param (str) content
|
||||
@return (list) variable name list
|
||||
|
||||
e.g. $variable => ["variable"]
|
||||
/blog/$postid => ["postid"]
|
||||
/$var1/$var2 => ["var1", "var2"]
|
||||
abc => []
|
||||
"""
|
||||
# TODO: change variable notation from $var to {{var}}
|
||||
try:
|
||||
return re.findall(variable_regexp, content)
|
||||
except TypeError:
|
||||
return []
|
||||
|
||||
|
||||
def parse_function(content):
|
||||
""" parse function name and args from string content.
|
||||
@param (str) content
|
||||
|
||||
@@ -11,25 +11,10 @@ from httprunner import exceptions, loader, logger, parser, utils
|
||||
from httprunner.compat import (OrderedDict, basestring, builtin_str,
|
||||
numeric_types, str)
|
||||
|
||||
variable_regexp = r"\$([\w_]+)"
|
||||
|
||||
function_regexp = r"\$\{([\w_]+\([\$\w\.\-_ =,]*\))\}"
|
||||
|
||||
|
||||
def extract_variables(content):
|
||||
""" extract all variable names from content, which is in format $variable
|
||||
@param (str) content
|
||||
@return (list) variable name list
|
||||
|
||||
e.g. $variable => ["variable"]
|
||||
/blog/$postid => ["postid"]
|
||||
/$var1/$var2 => ["var1", "var2"]
|
||||
abc => []
|
||||
"""
|
||||
try:
|
||||
return re.findall(variable_regexp, content)
|
||||
except TypeError:
|
||||
return []
|
||||
|
||||
def extract_functions(content):
|
||||
""" extract all functions from string content, which are in format ${fun()}
|
||||
@param (str) content
|
||||
@@ -298,7 +283,7 @@ class TestcaseParser(object):
|
||||
/$var_1/$var_2/var3 => "/abc/def/var3"
|
||||
${func($var_1, $var_2, xyz)} => "${func(abc, def, xyz)}"
|
||||
"""
|
||||
variables_list = extract_variables(content)
|
||||
variables_list = parser.extract_variables(content)
|
||||
for variable_name in variables_list:
|
||||
variable_value = self.get_bind_variable(variable_name)
|
||||
|
||||
|
||||
@@ -12,6 +12,52 @@ class TestParser(unittest.TestCase):
|
||||
self.assertEqual(parser.parse_string_value("$var"), "$var")
|
||||
self.assertEqual(parser.parse_string_value("${func}"), "${func}")
|
||||
|
||||
def test_extract_variables(self):
|
||||
self.assertEqual(
|
||||
parser.extract_variables("$var"),
|
||||
["var"]
|
||||
)
|
||||
self.assertEqual(
|
||||
parser.extract_variables("$var123"),
|
||||
["var123"]
|
||||
)
|
||||
self.assertEqual(
|
||||
parser.extract_variables("$var_name"),
|
||||
["var_name"]
|
||||
)
|
||||
self.assertEqual(
|
||||
parser.extract_variables("var"),
|
||||
[]
|
||||
)
|
||||
self.assertEqual(
|
||||
parser.extract_variables("a$var"),
|
||||
["var"]
|
||||
)
|
||||
self.assertEqual(
|
||||
parser.extract_variables("$v ar"),
|
||||
["v"]
|
||||
)
|
||||
self.assertEqual(
|
||||
parser.extract_variables(" "),
|
||||
[]
|
||||
)
|
||||
self.assertEqual(
|
||||
parser.extract_variables("$abc*"),
|
||||
["abc"]
|
||||
)
|
||||
self.assertEqual(
|
||||
parser.extract_variables("${func()}"),
|
||||
[]
|
||||
)
|
||||
self.assertEqual(
|
||||
parser.extract_variables("${func(1,2)}"),
|
||||
[]
|
||||
)
|
||||
self.assertEqual(
|
||||
parser.extract_variables("${gen_md5($TOKEN, $data, $random)}"),
|
||||
["TOKEN", "data", "random"]
|
||||
)
|
||||
|
||||
def test_parse_function(self):
|
||||
self.assertEqual(
|
||||
parser.parse_function("func()"),
|
||||
|
||||
@@ -120,51 +120,6 @@ class TestcaseParserUnittest(unittest.TestCase):
|
||||
3 * 2 * 3
|
||||
)
|
||||
|
||||
def test_extract_variables(self):
|
||||
self.assertEqual(
|
||||
testcase.extract_variables("$var"),
|
||||
["var"]
|
||||
)
|
||||
self.assertEqual(
|
||||
testcase.extract_variables("$var123"),
|
||||
["var123"]
|
||||
)
|
||||
self.assertEqual(
|
||||
testcase.extract_variables("$var_name"),
|
||||
["var_name"]
|
||||
)
|
||||
self.assertEqual(
|
||||
testcase.extract_variables("var"),
|
||||
[]
|
||||
)
|
||||
self.assertEqual(
|
||||
testcase.extract_variables("a$var"),
|
||||
["var"]
|
||||
)
|
||||
self.assertEqual(
|
||||
testcase.extract_variables("$v ar"),
|
||||
["v"]
|
||||
)
|
||||
self.assertEqual(
|
||||
testcase.extract_variables(" "),
|
||||
[]
|
||||
)
|
||||
self.assertEqual(
|
||||
testcase.extract_variables("$abc*"),
|
||||
["abc"]
|
||||
)
|
||||
self.assertEqual(
|
||||
testcase.extract_variables("${func()}"),
|
||||
[]
|
||||
)
|
||||
self.assertEqual(
|
||||
testcase.extract_variables("${func(1,2)}"),
|
||||
[]
|
||||
)
|
||||
self.assertEqual(
|
||||
testcase.extract_variables("${gen_md5($TOKEN, $data, $random)}"),
|
||||
["TOKEN", "data", "random"]
|
||||
)
|
||||
|
||||
def test_eval_content_variables(self):
|
||||
variables = {
|
||||
|
||||
Reference in New Issue
Block a user