mirror of
https://github.com/httprunner/httprunner.git
synced 2026-09-05 23:51:25 +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]*"
|
# 5, regex string, e.g. "LB[\d]*(.*)RB[\d]*"
|
||||||
|
|
||||||
if isinstance(check_item, (dict, list)) \
|
if isinstance(check_item, (dict, list)) \
|
||||||
or testcase.extract_variables(check_item) \
|
or parser.extract_variables(check_item) \
|
||||||
or testcase.extract_functions(check_item):
|
or testcase.extract_functions(check_item):
|
||||||
# format 1/2/3
|
# format 1/2/3
|
||||||
check_value = self.eval_content(check_item)
|
check_value = self.eval_content(check_item)
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import re
|
|||||||
|
|
||||||
from httprunner import exceptions
|
from httprunner import exceptions
|
||||||
|
|
||||||
|
variable_regexp = r"\$([\w_]+)"
|
||||||
function_regexp_compile = re.compile(r"^([\w_]+)\(([\$\w\.\-_ =,]*)\)$")
|
function_regexp_compile = re.compile(r"^([\w_]+)\(([\$\w\.\-_ =,]*)\)$")
|
||||||
|
|
||||||
|
|
||||||
@@ -22,6 +23,23 @@ def parse_string_value(str_value):
|
|||||||
return 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):
|
def parse_function(content):
|
||||||
""" parse function name and args from string content.
|
""" parse function name and args from string content.
|
||||||
@param (str) content
|
@param (str) content
|
||||||
|
|||||||
+2
-17
@@ -11,25 +11,10 @@ from httprunner import exceptions, loader, logger, parser, utils
|
|||||||
from httprunner.compat import (OrderedDict, basestring, builtin_str,
|
from httprunner.compat import (OrderedDict, basestring, builtin_str,
|
||||||
numeric_types, str)
|
numeric_types, str)
|
||||||
|
|
||||||
variable_regexp = r"\$([\w_]+)"
|
|
||||||
function_regexp = r"\$\{([\w_]+\([\$\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):
|
def extract_functions(content):
|
||||||
""" extract all functions from string content, which are in format ${fun()}
|
""" extract all functions from string content, which are in format ${fun()}
|
||||||
@param (str) content
|
@param (str) content
|
||||||
@@ -298,7 +283,7 @@ class TestcaseParser(object):
|
|||||||
/$var_1/$var_2/var3 => "/abc/def/var3"
|
/$var_1/$var_2/var3 => "/abc/def/var3"
|
||||||
${func($var_1, $var_2, xyz)} => "${func(abc, def, xyz)}"
|
${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:
|
for variable_name in variables_list:
|
||||||
variable_value = self.get_bind_variable(variable_name)
|
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("$var"), "$var")
|
||||||
self.assertEqual(parser.parse_string_value("${func}"), "${func}")
|
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):
|
def test_parse_function(self):
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
parser.parse_function("func()"),
|
parser.parse_function("func()"),
|
||||||
|
|||||||
@@ -120,51 +120,6 @@ class TestcaseParserUnittest(unittest.TestCase):
|
|||||||
3 * 2 * 3
|
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):
|
def test_eval_content_variables(self):
|
||||||
variables = {
|
variables = {
|
||||||
|
|||||||
Reference in New Issue
Block a user