mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-13 08:59:44 +08:00
update parameterize feature:
def get_user_agent():
return ["iOS/10.1", "iOS/10.2"]
def get_account_in_tuple():
return [("user1", "111111"), ("user2", "222222")]
This commit is contained in:
@@ -315,16 +315,33 @@ def parse_parameters(parameters, variables_mapping=None, functions_mapping=None)
|
||||
else:
|
||||
# (2) & (3)
|
||||
parsed_parameter_content = parse_data(parameter_content, variables_mapping, functions_mapping)
|
||||
# e.g. [{'app_version': '2.8.5'}, {'app_version': '2.8.6'}]
|
||||
# e.g. [{"username": "user1", "password": "111111"}, {"username": "user2", "password": "222222"}]
|
||||
if not isinstance(parsed_parameter_content, list):
|
||||
raise exceptions.ParamsError("parameters syntax error!")
|
||||
|
||||
parameter_content_list = [
|
||||
# get subset by parameter name
|
||||
{key: parameter_item[key] for key in parameter_name_list}
|
||||
for parameter_item in parsed_parameter_content
|
||||
]
|
||||
parameter_content_list = []
|
||||
for parameter_item in parsed_parameter_content:
|
||||
if isinstance(parameter_item, dict):
|
||||
# get subset by parameter name
|
||||
# {"app_version": "${gen_app_version()}"}
|
||||
# gen_app_version() => [{'app_version': '2.8.5'}, {'app_version': '2.8.6'}]
|
||||
# {"username-password": "${get_account()}"}
|
||||
# get_account() => [
|
||||
# {"username": "user1", "password": "111111"},
|
||||
# {"username": "user2", "password": "222222"}
|
||||
# ]
|
||||
parameter_dict = {key: parameter_item[key] for key in parameter_name_list}
|
||||
elif isinstance(parameter_item, (list, tuple)):
|
||||
# {"username-password": "${get_account()}"}
|
||||
# get_account() => [("user1", "111111"), ("user2", "222222")]
|
||||
parameter_dict = dict(zip(parameter_name_list, parameter_item))
|
||||
elif len(parameter_name_list) == 1:
|
||||
# {"user_agent": "${get_user_agent()}"}
|
||||
# get_user_agent() => ["iOS/10.1", "iOS/10.2"]
|
||||
parameter_dict = {
|
||||
parameter_name_list[0]: parameter_item
|
||||
}
|
||||
|
||||
parameter_content_list.append(parameter_dict)
|
||||
|
||||
parsed_parameters_list.append(parameter_content_list)
|
||||
|
||||
|
||||
@@ -45,6 +45,9 @@ def skip_test_in_production_env():
|
||||
"""
|
||||
return os.environ["TEST_ENV"] == "PRODUCTION"
|
||||
|
||||
def get_user_agent():
|
||||
return ["iOS/10.1", "iOS/10.2"]
|
||||
|
||||
def gen_app_version():
|
||||
return [
|
||||
{"app_version": "2.8.5"},
|
||||
@@ -57,6 +60,9 @@ def get_account():
|
||||
{"username": "user2", "password": "222222"}
|
||||
]
|
||||
|
||||
def get_account_in_tuple():
|
||||
return [("user1", "111111"), ("user2", "222222")]
|
||||
|
||||
def gen_random_string(str_len):
|
||||
random_char_list = []
|
||||
for _ in range(str_len):
|
||||
|
||||
@@ -376,8 +376,10 @@ class TestParser(unittest.TestCase):
|
||||
|
||||
def test_parse_parameters_custom_function(self):
|
||||
parameters = [
|
||||
{"user_agent": "${get_user_agent()}"},
|
||||
{"app_version": "${gen_app_version()}"},
|
||||
{"username-password": "${get_account()}"}
|
||||
{"username-password": "${get_account()}"},
|
||||
{"username2-password2": "${get_account_in_tuple()}"}
|
||||
]
|
||||
dot_env_path = os.path.join(
|
||||
os.getcwd(), "tests", ".env"
|
||||
@@ -388,9 +390,20 @@ class TestParser(unittest.TestCase):
|
||||
parameters,
|
||||
functions_mapping=loader.load_module_functions(debugtalk)
|
||||
)
|
||||
self.assertIn(
|
||||
{
|
||||
'user_agent': 'iOS/10.1',
|
||||
'app_version': '2.8.5',
|
||||
'username': 'user1',
|
||||
'password': '111111',
|
||||
'username2': 'user1',
|
||||
'password2': '111111'
|
||||
},
|
||||
cartesian_product_parameters
|
||||
)
|
||||
self.assertEqual(
|
||||
len(cartesian_product_parameters),
|
||||
2 * 2
|
||||
2 * 2 * 2 * 2
|
||||
)
|
||||
|
||||
def test_parse_parameters_parameterize(self):
|
||||
|
||||
Reference in New Issue
Block a user