load_testcases_by_path: return testcase sets list, each testset is corresponding to a file

This commit is contained in:
httprunner
2017-06-26 20:57:22 +08:00
parent f2bc07ada5
commit e7ca4f26fd
2 changed files with 45 additions and 39 deletions

View File

@@ -145,27 +145,28 @@ def load_testcases_by_path(path):
- absolute/relative file path - absolute/relative file path
- absolute/relative folder path - absolute/relative folder path
- list/set container with file(s) and/or folder(s) - list/set container with file(s) and/or folder(s)
@return all loaded testcases in a list @return testcase sets list, each testset is corresponding to a file
[
[testcase11, testcase12],
[testcase21, testcase22, testcase23]
]
""" """
testcases_list = []
if isinstance(path, (list, set)): if isinstance(path, (list, set)):
for file_path in set(path): testsets_list = []
_testcases_list = load_testcases_by_path(file_path)
for testcase in _testcases_list:
testcases_list.append(testcase)
return testcases_list for file_path in set(path):
_testsets_list = load_testcases_by_path(file_path)
testsets_list.extend(_testsets_list)
return testsets_list
if not os.path.isabs(path): if not os.path.isabs(path):
path = os.path.join(os.getcwd(), 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): if os.path.isdir(path):
files = load_foler_files(path) files_list = load_foler_files(path)
testcases_list.extend(load_testcases_by_path(files)) return load_testcases_by_path(files_list)
return testcases_list if os.path.isfile(path):
testcases_list = load_testcases(path)
return [testcases_list]

View File

@@ -251,54 +251,59 @@ class TestUtils(ApiServerUnittest):
self.assertIn(file2, files) self.assertIn(file2, files)
def test_load_testcases_by_path_files(self): def test_load_testcases_by_path_files(self):
testcases_list = [] testsets_list = []
# absolute file path # absolute file path
path = os.path.join( path = os.path.join(
os.getcwd(), 'test/data/simple_demo_no_auth.json') os.getcwd(), 'test/data/simple_demo_no_auth.json')
testcases_list.extend(utils.load_testcases_by_path(path)) testset_list = utils.load_testcases_by_path(path)
self.assertEqual(len(testcases_list), 2) self.assertEqual(len(testset_list), 1)
self.assertEqual(len(testset_list[0]), 2)
testsets_list.extend(testset_list)
# relative file path # relative file path
path = 'test/data/simple_demo_no_auth.yml' path = 'test/data/simple_demo_no_auth.yml'
testcases_list.extend(utils.load_testcases_by_path(path)) testset_list = utils.load_testcases_by_path(path)
self.assertEqual(len(testcases_list), 4) self.assertEqual(len(testset_list), 1)
self.assertEqual(len(testset_list[0]), 2)
testsets_list.extend(testset_list)
# list/set container with file(s) # list/set container with file(s)
path = [ path = [
os.path.join(os.getcwd(), 'test/data/simple_demo_no_auth.json'), os.path.join(os.getcwd(), 'test/data/simple_demo_no_auth.json'),
'test/data/simple_demo_no_auth.yml' 'test/data/simple_demo_no_auth.yml'
] ]
testcases_list.extend(utils.load_testcases_by_path(path)) testset_list = utils.load_testcases_by_path(path)
self.assertEqual(len(testcases_list), 8) self.assertEqual(len(testset_list), 2)
self.assertEqual(len(testset_list[0]), 2)
self.assertEqual(len(testset_list[1]), 2)
testsets_list.extend(testset_list)
self.assertEqual(len(testsets_list), 4)
for testcase in testcases_list: for testset in testsets_list:
testcase = testcase["test"] for testcase in testset:
self.assertIn('name', testcase) testcase = testcase["test"]
self.assertIn('request', testcase) self.assertIn('name', testcase)
self.assertIn('response', testcase) self.assertIn('request', testcase)
self.assertIn('url', testcase['request']) self.assertIn('response', testcase)
self.assertIn('method', testcase['request']) self.assertIn('url', testcase['request'])
self.assertIn('method', testcase['request'])
def test_load_testcases_by_path_folder(self): def test_load_testcases_by_path_folder(self):
testcases_list_1 = []
testcases_list_2 = []
testcases_list_3 = []
# absolute folder path # absolute folder path
path = os.path.join(os.getcwd(), 'test/data') path = os.path.join(os.getcwd(), 'test/data')
testcases_list_1.extend(utils.load_testcases_by_path(path)) testset_list_1 = utils.load_testcases_by_path(path)
self.assertGreater(len(testcases_list_1), 10) self.assertGreater(len(testset_list_1), 6)
# relative folder path # relative folder path
path = 'test/data/' path = 'test/data/'
testcases_list_2.extend(utils.load_testcases_by_path(path)) testset_list_2 = utils.load_testcases_by_path(path)
self.assertEqual(len(testcases_list_1), len(testcases_list_2)) self.assertEqual(len(testset_list_1), len(testset_list_2))
# list/set container with file(s) # list/set container with file(s)
path = [ path = [
os.path.join(os.getcwd(), 'test/data'), os.path.join(os.getcwd(), 'test/data'),
'test/data/' 'test/data/'
] ]
testcases_list_3.extend(utils.load_testcases_by_path(path)) testset_list_3 = utils.load_testcases_by_path(path)
self.assertEqual(len(testcases_list_3), 2 * len(testcases_list_1)) self.assertEqual(len(testset_list_3), 2 * len(testset_list_1))