mirror of
https://github.com/httprunner/httprunner.git
synced 2026-08-27 11:10:31 +08:00
relocate variable and function validator
This commit is contained in:
@@ -14,7 +14,7 @@ import string
|
|||||||
import types
|
import types
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from httprunner import exceptions, logger
|
from httprunner import exceptions, logger, validator
|
||||||
from httprunner.compat import OrderedDict, basestring, is_py2, is_py3
|
from httprunner.compat import OrderedDict, basestring, is_py2, is_py3
|
||||||
from requests.structures import CaseInsensitiveDict
|
from requests.structures import CaseInsensitiveDict
|
||||||
|
|
||||||
@@ -147,30 +147,6 @@ def deep_update_dict(origin_dict, override_dict):
|
|||||||
|
|
||||||
return origin_dict
|
return origin_dict
|
||||||
|
|
||||||
def is_function(tup):
|
|
||||||
""" Takes (name, object) tuple, returns True if it is a function.
|
|
||||||
"""
|
|
||||||
name, item = tup
|
|
||||||
return isinstance(item, types.FunctionType)
|
|
||||||
|
|
||||||
def is_variable(tup):
|
|
||||||
""" Takes (name, object) tuple, returns True if it is a variable.
|
|
||||||
"""
|
|
||||||
name, item = tup
|
|
||||||
if callable(item):
|
|
||||||
# function or class
|
|
||||||
return False
|
|
||||||
|
|
||||||
if isinstance(item, types.ModuleType):
|
|
||||||
# imported module
|
|
||||||
return False
|
|
||||||
|
|
||||||
if name.startswith("_"):
|
|
||||||
# private property
|
|
||||||
return False
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
def get_imported_module(module_name):
|
def get_imported_module(module_name):
|
||||||
""" import module and return imported module
|
""" import module and return imported module
|
||||||
"""
|
"""
|
||||||
@@ -195,7 +171,7 @@ def filter_module(module, filter_type):
|
|||||||
module: imported module
|
module: imported module
|
||||||
filter_type: "function" or "variable"
|
filter_type: "function" or "variable"
|
||||||
"""
|
"""
|
||||||
filter_type = is_function if filter_type == "function" else is_variable
|
filter_type = validator.is_function if filter_type == "function" else validator.is_variable
|
||||||
module_functions_dict = dict(filter(filter_type, vars(module).items()))
|
module_functions_dict = dict(filter(filter_type, vars(module).items()))
|
||||||
return module_functions_dict
|
return module_functions_dict
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
|
import types
|
||||||
|
|
||||||
""" validate data format
|
""" validate data format
|
||||||
TODO: refactor with JSON schema validate
|
TODO: refactor with JSON schema validate
|
||||||
@@ -43,3 +44,35 @@ def is_testcases(data_structure):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
## validate varibles and functions
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
def is_function(tup):
|
||||||
|
""" Takes (name, object) tuple, returns True if it is a function.
|
||||||
|
"""
|
||||||
|
name, item = tup
|
||||||
|
return isinstance(item, types.FunctionType)
|
||||||
|
|
||||||
|
|
||||||
|
def is_variable(tup):
|
||||||
|
""" Takes (name, object) tuple, returns True if it is a variable.
|
||||||
|
"""
|
||||||
|
name, item = tup
|
||||||
|
if callable(item):
|
||||||
|
# function or class
|
||||||
|
return False
|
||||||
|
|
||||||
|
if isinstance(item, types.ModuleType):
|
||||||
|
# imported module
|
||||||
|
return False
|
||||||
|
|
||||||
|
if name.startswith("_"):
|
||||||
|
# private property
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import unittest
|
|
||||||
|
|
||||||
from httprunner import exceptions, utils
|
from httprunner import exceptions, utils, validator
|
||||||
from httprunner.compat import OrderedDict
|
from httprunner.compat import OrderedDict
|
||||||
from tests.base import ApiServerUnittest
|
from tests.base import ApiServerUnittest
|
||||||
|
|
||||||
@@ -180,11 +179,11 @@ class TestUtils(ApiServerUnittest):
|
|||||||
|
|
||||||
def test_search_conf_function(self):
|
def test_search_conf_function(self):
|
||||||
gen_md5 = utils.search_conf_item("tests/data/demo_binds.yml", "function", "gen_md5")
|
gen_md5 = utils.search_conf_item("tests/data/demo_binds.yml", "function", "gen_md5")
|
||||||
self.assertTrue(utils.is_function(("gen_md5", gen_md5)))
|
self.assertTrue(validator.is_function(("gen_md5", gen_md5)))
|
||||||
self.assertEqual(gen_md5("abc"), "900150983cd24fb0d6963f7d28e17f72")
|
self.assertEqual(gen_md5("abc"), "900150983cd24fb0d6963f7d28e17f72")
|
||||||
|
|
||||||
gen_md5 = utils.search_conf_item("tests/data/subfolder/test.yml", "function", "gen_md5")
|
gen_md5 = utils.search_conf_item("tests/data/subfolder/test.yml", "function", "gen_md5")
|
||||||
self.assertTrue(utils.is_function(("_", gen_md5)))
|
self.assertTrue(validator.is_function(("_", gen_md5)))
|
||||||
self.assertEqual(gen_md5("abc"), "900150983cd24fb0d6963f7d28e17f72")
|
self.assertEqual(gen_md5("abc"), "900150983cd24fb0d6963f7d28e17f72")
|
||||||
|
|
||||||
with self.assertRaises(exceptions.FunctionNotFound):
|
with self.assertRaises(exceptions.FunctionNotFound):
|
||||||
@@ -195,11 +194,11 @@ class TestUtils(ApiServerUnittest):
|
|||||||
|
|
||||||
def test_search_conf_variable(self):
|
def test_search_conf_variable(self):
|
||||||
SECRET_KEY = utils.search_conf_item("tests/data/demo_binds.yml", "variable", "SECRET_KEY")
|
SECRET_KEY = utils.search_conf_item("tests/data/demo_binds.yml", "variable", "SECRET_KEY")
|
||||||
self.assertTrue(utils.is_variable(("SECRET_KEY", SECRET_KEY)))
|
self.assertTrue(validator.is_variable(("SECRET_KEY", SECRET_KEY)))
|
||||||
self.assertEqual(SECRET_KEY, "DebugTalk")
|
self.assertEqual(SECRET_KEY, "DebugTalk")
|
||||||
|
|
||||||
SECRET_KEY = utils.search_conf_item("tests/data/subfolder/test.yml", "variable", "SECRET_KEY")
|
SECRET_KEY = utils.search_conf_item("tests/data/subfolder/test.yml", "variable", "SECRET_KEY")
|
||||||
self.assertTrue(utils.is_variable(("SECRET_KEY", SECRET_KEY)))
|
self.assertTrue(validator.is_variable(("SECRET_KEY", SECRET_KEY)))
|
||||||
self.assertEqual(SECRET_KEY, "DebugTalk")
|
self.assertEqual(SECRET_KEY, "DebugTalk")
|
||||||
|
|
||||||
with self.assertRaises(exceptions.VariableNotFound):
|
with self.assertRaises(exceptions.VariableNotFound):
|
||||||
@@ -208,21 +207,6 @@ class TestUtils(ApiServerUnittest):
|
|||||||
with self.assertRaises(exceptions.VariableNotFound):
|
with self.assertRaises(exceptions.VariableNotFound):
|
||||||
utils.search_conf_item("/user/local/bin", "variable", "SECRET_KEY")
|
utils.search_conf_item("/user/local/bin", "variable", "SECRET_KEY")
|
||||||
|
|
||||||
def test_is_variable(self):
|
|
||||||
var1 = 123
|
|
||||||
var2 = "abc"
|
|
||||||
self.assertTrue(utils.is_variable(("var1", var1)))
|
|
||||||
self.assertTrue(utils.is_variable(("var2", var2)))
|
|
||||||
|
|
||||||
__var = 123
|
|
||||||
self.assertFalse(utils.is_variable(("__var", __var)))
|
|
||||||
|
|
||||||
func = lambda x: x + 1
|
|
||||||
self.assertFalse(utils.is_variable(("func", func)))
|
|
||||||
|
|
||||||
self.assertFalse(utils.is_variable(("os", os)))
|
|
||||||
self.assertFalse(utils.is_variable(("utils", utils)))
|
|
||||||
|
|
||||||
def test_handle_config_key_case(self):
|
def test_handle_config_key_case(self):
|
||||||
origin_dict = {
|
origin_dict = {
|
||||||
"Name": "test",
|
"Name": "test",
|
||||||
|
|||||||
@@ -33,3 +33,23 @@ class TestValidator(unittest.TestCase):
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
self.assertTrue(data_structure)
|
self.assertTrue(data_structure)
|
||||||
|
|
||||||
|
def test_is_variable(self):
|
||||||
|
var1 = 123
|
||||||
|
var2 = "abc"
|
||||||
|
self.assertTrue(validator.is_variable(("var1", var1)))
|
||||||
|
self.assertTrue(validator.is_variable(("var2", var2)))
|
||||||
|
|
||||||
|
__var = 123
|
||||||
|
self.assertFalse(validator.is_variable(("__var", __var)))
|
||||||
|
|
||||||
|
func = lambda x: x + 1
|
||||||
|
self.assertFalse(validator.is_variable(("func", func)))
|
||||||
|
|
||||||
|
self.assertFalse(validator.is_variable(("unittest", unittest)))
|
||||||
|
|
||||||
|
def test_is_function(self):
|
||||||
|
func = lambda x: x + 1
|
||||||
|
self.assertTrue(validator.is_function(("func", func)))
|
||||||
|
|
||||||
|
self.assertTrue(validator.is_function(("func", validator.is_testcase)))
|
||||||
|
|||||||
Reference in New Issue
Block a user