mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-12 02:21:29 +08:00
add args and kwargs validation for ENV() and P()
This commit is contained in:
@@ -414,10 +414,14 @@ def parse_string_functions(content, variables_mapping, functions_mapping):
|
||||
kwargs = parse_data(kwargs, variables_mapping, functions_mapping)
|
||||
|
||||
if func_name in ["parameterize", "P"]:
|
||||
if len(args) != 1 or kwargs:
|
||||
raise exceptions.ParamsError("P() should only pass in one argument!")
|
||||
from httprunner import loader
|
||||
eval_value = loader.load_csv_file(*args)
|
||||
eval_value = loader.load_csv_file(args[0])
|
||||
elif func_name in ["environ", "ENV"]:
|
||||
eval_value = utils.get_os_environ(*args)
|
||||
if len(args) != 1 or kwargs:
|
||||
raise exceptions.ParamsError("ENV() should only pass in one argument!")
|
||||
eval_value = utils.get_os_environ(args[0])
|
||||
else:
|
||||
func = get_mapping_function(func_name, functions_mapping)
|
||||
eval_value = func(*args, **kwargs)
|
||||
|
||||
@@ -451,3 +451,28 @@ class TestParser(unittest.TestCase):
|
||||
)
|
||||
self.assertIsInstance(parsed_testcases, list)
|
||||
self.assertEqual(parsed_testcases[0]["config"]["name"], '12311')
|
||||
|
||||
def test_parse_environ(self):
|
||||
os.environ["PROJECT_KEY"] = "ABCDEFGH"
|
||||
content = {
|
||||
"variables": [
|
||||
{"PROJECT_KEY": "${ENV(PROJECT_KEY)}"}
|
||||
]
|
||||
}
|
||||
result = parser.parse_data(content)
|
||||
|
||||
content = {
|
||||
"variables": [
|
||||
{"PROJECT_KEY": "${ENV(PROJECT_KEY, abc)}"}
|
||||
]
|
||||
}
|
||||
with self.assertRaises(exceptions.ParamsError):
|
||||
parser.parse_data(content)
|
||||
|
||||
content = {
|
||||
"variables": [
|
||||
{"PROJECT_KEY": "${ENV(abc=123)}"}
|
||||
]
|
||||
}
|
||||
with self.assertRaises(exceptions.ParamsError):
|
||||
parser.parse_data(content)
|
||||
|
||||
Reference in New Issue
Block a user