mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-12 11:29:48 +08:00
load_testcases_by_path
This commit is contained in:
44
ate/utils.py
44
ate/utils.py
@@ -125,3 +125,47 @@ def diff_response(resp_obj, expected_resp_json):
|
||||
diff_content['body'] = body_diff
|
||||
|
||||
return diff_content
|
||||
|
||||
def load_foler_files(folder_path):
|
||||
""" load folder path, return all files in list format.
|
||||
"""
|
||||
file_list = []
|
||||
|
||||
for dirpath, dirnames, filenames in os.walk(folder_path):
|
||||
for filename in filenames:
|
||||
file_path = os.path.join(dirpath, filename)
|
||||
file_list.append(file_path)
|
||||
|
||||
return file_list
|
||||
|
||||
def load_testcases_by_path(path):
|
||||
""" load testcases from file path
|
||||
@param path
|
||||
path could be in several type:
|
||||
- absolute/relative file path
|
||||
- absolute/relative folder path
|
||||
- list/set container with file(s) and/or folder(s)
|
||||
@return all loaded testcases in a list
|
||||
"""
|
||||
testcases_list = []
|
||||
|
||||
if isinstance(path, (list, set)):
|
||||
for file_path in set(path):
|
||||
_testcases_list = load_testcases_by_path(file_path)
|
||||
for testcase in _testcases_list:
|
||||
testcases_list.append(testcase)
|
||||
|
||||
return testcases_list
|
||||
|
||||
if not os.path.isabs(path):
|
||||
path = os.path.join(os.getcwd(), path)
|
||||
|
||||
if os.path.isfile(path):
|
||||
testcases = load_testcases(path)
|
||||
testcases_list.extend(testcases)
|
||||
|
||||
if os.path.isdir(path):
|
||||
files = load_foler_files(path)
|
||||
testcases_list.extend(load_testcases_by_path(files))
|
||||
|
||||
return testcases_list
|
||||
|
||||
@@ -241,3 +241,64 @@ class TestUtils(ApiServerUnittest):
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
def test_load_foler_files(self):
|
||||
folder = os.path.join(os.getcwd(), 'test')
|
||||
files = utils.load_foler_files(folder)
|
||||
file1 = os.path.join(os.getcwd(), 'test', 'test_utils.py')
|
||||
file2 = os.path.join(os.getcwd(), 'test', 'data', 'demo_binds.yml')
|
||||
self.assertIn(file1, files)
|
||||
self.assertIn(file2, files)
|
||||
|
||||
def test_load_testcases_by_path_files(self):
|
||||
testcases_list = []
|
||||
|
||||
# absolute file path
|
||||
path = os.path.join(
|
||||
os.getcwd(), 'test/data/simple_demo_no_auth.json')
|
||||
testcases_list.extend(utils.load_testcases_by_path(path))
|
||||
self.assertEqual(len(testcases_list), 2)
|
||||
|
||||
# relative file path
|
||||
path = 'test/data/simple_demo_no_auth.yml'
|
||||
testcases_list.extend(utils.load_testcases_by_path(path))
|
||||
self.assertEqual(len(testcases_list), 4)
|
||||
|
||||
# list/set container with file(s)
|
||||
path = [
|
||||
os.path.join(os.getcwd(), 'test/data/simple_demo_no_auth.json'),
|
||||
'test/data/simple_demo_no_auth.yml'
|
||||
]
|
||||
testcases_list.extend(utils.load_testcases_by_path(path))
|
||||
self.assertEqual(len(testcases_list), 8)
|
||||
|
||||
for testcase in testcases_list:
|
||||
testcase = testcase["test"]
|
||||
self.assertIn('name', testcase)
|
||||
self.assertIn('request', testcase)
|
||||
self.assertIn('response', testcase)
|
||||
self.assertIn('url', testcase['request'])
|
||||
self.assertIn('method', testcase['request'])
|
||||
|
||||
def test_load_testcases_by_path_folder(self):
|
||||
testcases_list_1 = []
|
||||
testcases_list_2 = []
|
||||
testcases_list_3 = []
|
||||
|
||||
# absolute folder path
|
||||
path = os.path.join(os.getcwd(), 'test/data')
|
||||
testcases_list_1.extend(utils.load_testcases_by_path(path))
|
||||
self.assertGreater(len(testcases_list_1), 10)
|
||||
|
||||
# relative folder path
|
||||
path = 'test/data/'
|
||||
testcases_list_2.extend(utils.load_testcases_by_path(path))
|
||||
self.assertEqual(len(testcases_list_1), len(testcases_list_2))
|
||||
|
||||
# list/set container with file(s)
|
||||
path = [
|
||||
os.path.join(os.getcwd(), 'test/data'),
|
||||
'test/data/'
|
||||
]
|
||||
testcases_list_3.extend(utils.load_testcases_by_path(path))
|
||||
self.assertEqual(len(testcases_list_3), 2 * len(testcases_list_1))
|
||||
|
||||
Reference in New Issue
Block a user