feat: testsuite in format version 2

This commit is contained in:
debugtalk
2019-06-24 16:45:49 +08:00
parent ec384dc9da
commit eb1729e88a
5 changed files with 150 additions and 17 deletions
+37 -7
View File
@@ -443,7 +443,7 @@ def load_testcase(raw_testcase):
def load_testcase_v2(raw_testcase): def load_testcase_v2(raw_testcase):
""" load testcase in version 2. """ load testcase in format version 2.
Args: Args:
raw_testcase (dict): raw testcase content loaded from JSON/YAML file: raw_testcase (dict): raw testcase content loaded from JSON/YAML file:
@@ -482,13 +482,15 @@ def load_testcase_v2(raw_testcase):
def load_testsuite(raw_testsuite): def load_testsuite(raw_testsuite):
""" load testsuite with testcase references. """ load testsuite with testcase references.
support two different formats.
Args: Args:
raw_testsuite (dict): raw testsuite content loaded from JSON/YAML file: raw_testsuite (dict): raw testsuite content loaded from JSON/YAML file:
# version 1, compatible with version < 2.2.0
{ {
"config": { "config": {
"name": "", "name": "xxx",
"request": {} "variables": {}
} }
"testcases": { "testcases": {
"testcase1": { "testcase1": {
@@ -500,6 +502,23 @@ def load_testsuite(raw_testsuite):
} }
} }
# version 2, implemented in 2.2.0
{
"config": {
"name": "xxx",
"variables": {}
}
"testcases": [
{
"name": "testcase1",
"testcase": "/path/to/testcase",
"variables": {...},
"parameters": {...}
},
{}
]
}
Returns: Returns:
dict: loaded testsuite content dict: loaded testsuite content
{ {
@@ -508,10 +527,21 @@ def load_testsuite(raw_testsuite):
} }
""" """
testcases = raw_testsuite["testcases"] raw_testcases = raw_testsuite.pop("testcases")
for name, raw_testcase in testcases.items(): raw_testsuite["testcases"] = {}
__extend_with_testcase_ref(raw_testcase)
raw_testcase.setdefault("name", name) if isinstance(raw_testcases, dict):
# make compatible with version < 2.2.0
for name, raw_testcase in raw_testcases.items():
__extend_with_testcase_ref(raw_testcase)
raw_testcase.setdefault("name", name)
raw_testsuite["testcases"][name] = raw_testcase
elif isinstance(raw_testcases, list):
# format version 2, implemented in 2.2.0
for raw_testcase in raw_testcases:
__extend_with_testcase_ref(raw_testcase)
testcase_name = raw_testcase["name"]
raw_testsuite["testcases"][testcase_name] = raw_testcase
return raw_testsuite return raw_testsuite
+29 -10
View File
@@ -316,17 +316,36 @@ class TestSuiteLoader(unittest.TestCase):
self.assertEqual(len(loaded_content["teststeps"]), 2) self.assertEqual(len(loaded_content["teststeps"]), 2)
def test_load_test_file_testsuite(self): def test_load_test_file_testsuite(self):
loaded_content = loader.load_test_file("tests/testsuites/create_users.yml") for loaded_content in [
self.assertEqual(loaded_content["type"], "testsuite") loader.load_test_file("tests/testsuites/create_users.yml"),
loader.load_test_file("tests/testsuites/create_users.json")
]:
self.assertEqual(loaded_content["type"], "testsuite")
testcases = loaded_content["testcases"] testcases = loaded_content["testcases"]
self.assertEqual(len(testcases), 2) self.assertEqual(len(testcases), 2)
self.assertIn('create user 1000 and check result.', testcases) self.assertIn('create user 1000 and check result.', testcases)
self.assertIn('testcase_def', testcases["create user 1000 and check result."]) self.assertIn('testcase_def', testcases["create user 1000 and check result."])
self.assertEqual( self.assertEqual(
testcases["create user 1000 and check result."]["testcase_def"]["config"]["name"], testcases["create user 1000 and check result."]["testcase_def"]["config"]["name"],
"create user and check result." "create user and check result."
) )
def test_load_test_file_testsuite_v2(self):
for loaded_content in [
loader.load_test_file("tests/testsuites/create_users.v2.yml"),
loader.load_test_file("tests/testsuites/create_users.v2.json")
]:
self.assertEqual(loaded_content["type"], "testsuite")
testcases = loaded_content["testcases"]
self.assertEqual(len(testcases), 2)
self.assertIn('create user 1000 and check result.', testcases)
self.assertIn('testcase_def', testcases["create user 1000 and check result."])
self.assertEqual(
testcases["create user 1000 and check result."]["testcase_def"]["config"]["name"],
"create user and check result."
)
def test_load_tests_api_file(self): def test_load_tests_api_file(self):
path = os.path.join( path = os.path.join(
+29
View File
@@ -0,0 +1,29 @@
{
"testcases": {
"create user 1001 and check result.": {
"testcase": "testcases/create_user.yml",
"variables": {
"var_d": "$var_c",
"var_c": "${gen_random_string(5)}",
"uid": 1001
}
},
"create user 1000 and check result.": {
"testcase": "testcases/create_user.yml",
"variables": {
"var_d": "$var_c",
"var_c": "${gen_random_string(5)}",
"uid": 1000
}
}
},
"config": {
"variables": {
"device_sn": "${gen_random_string(15)}",
"var_b": "$var_a",
"var_a": "${gen_random_string(5)}"
},
"name": "create users with uid",
"base_url": "http://127.0.0.1:5000"
}
}
+31
View File
@@ -0,0 +1,31 @@
{
"config": {
"variables": {
"device_sn": "${gen_random_string(15)}",
"var_b": "$var_a",
"var_a": "${gen_random_string(5)}"
},
"name": "create users with uid",
"base_url": "http://127.0.0.1:5000"
},
"testcases": [
{
"name": "create user 1000 and check result.",
"testcase": "testcases/create_user.yml",
"variables": {
"var_d": "$var_c",
"var_c": "${gen_random_string(5)}",
"uid": 1000
}
},
{
"name": "create user 1001 and check result.",
"testcase": "testcases/create_user.yml",
"variables": {
"var_d": "$var_c",
"var_c": "${gen_random_string(5)}",
"uid": 1001
}
}
]
}
+24
View File
@@ -0,0 +1,24 @@
config:
name: create users with uid
variables:
device_sn: ${gen_random_string(15)}
var_a: ${gen_random_string(5)}
var_b: $var_a
base_url: "http://127.0.0.1:5000"
testcases:
-
name: create user 1000 and check result.
testcase: testcases/create_user.yml
variables:
uid: 1000
var_c: ${gen_random_string(5)}
var_d: $var_c
-
name: create user 1001 and check result.
testcase: testcases/create_user.yml
variables:
uid: 1001
var_c: ${gen_random_string(5)}
var_d: $var_c