mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-11 18:11:21 +08:00
relocate variable and function validator
This commit is contained in:
@@ -14,7 +14,7 @@ import string
|
||||
import types
|
||||
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 requests.structures import CaseInsensitiveDict
|
||||
|
||||
@@ -147,30 +147,6 @@ def deep_update_dict(origin_dict, override_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):
|
||||
""" import module and return imported module
|
||||
"""
|
||||
@@ -195,7 +171,7 @@ def filter_module(module, filter_type):
|
||||
module: imported module
|
||||
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()))
|
||||
return module_functions_dict
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
# encoding: utf-8
|
||||
import types
|
||||
|
||||
""" validate data format
|
||||
TODO: refactor with JSON schema validate
|
||||
@@ -43,3 +44,35 @@ def is_testcases(data_structure):
|
||||
return False
|
||||
|
||||
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 shutil
|
||||
import unittest
|
||||
|
||||
from httprunner import exceptions, utils
|
||||
from httprunner import exceptions, utils, validator
|
||||
from httprunner.compat import OrderedDict
|
||||
from tests.base import ApiServerUnittest
|
||||
|
||||
@@ -180,11 +179,11 @@ class TestUtils(ApiServerUnittest):
|
||||
|
||||
def test_search_conf_function(self):
|
||||
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")
|
||||
|
||||
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")
|
||||
|
||||
with self.assertRaises(exceptions.FunctionNotFound):
|
||||
@@ -195,11 +194,11 @@ class TestUtils(ApiServerUnittest):
|
||||
|
||||
def test_search_conf_variable(self):
|
||||
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")
|
||||
|
||||
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")
|
||||
|
||||
with self.assertRaises(exceptions.VariableNotFound):
|
||||
@@ -208,21 +207,6 @@ class TestUtils(ApiServerUnittest):
|
||||
with self.assertRaises(exceptions.VariableNotFound):
|
||||
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):
|
||||
origin_dict = {
|
||||
"Name": "test",
|
||||
|
||||
@@ -33,3 +33,23 @@ class TestValidator(unittest.TestCase):
|
||||
}
|
||||
]
|
||||
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