load_testcases_by_path

This commit is contained in:
debugtalk
2017-06-26 19:46:23 +08:00
parent 8facc2d498
commit e269ce6671
2 changed files with 105 additions and 0 deletions

View File

@@ -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

View File

@@ -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))