mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-12 02:21:29 +08:00
feat: testsuite in format version 2
This commit is contained in:
@@ -443,7 +443,7 @@ def load_testcase(raw_testcase):
|
||||
|
||||
|
||||
def load_testcase_v2(raw_testcase):
|
||||
""" load testcase in version 2.
|
||||
""" load testcase in format version 2.
|
||||
|
||||
Args:
|
||||
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):
|
||||
""" load testsuite with testcase references.
|
||||
support two different formats.
|
||||
|
||||
Args:
|
||||
raw_testsuite (dict): raw testsuite content loaded from JSON/YAML file:
|
||||
# version 1, compatible with version < 2.2.0
|
||||
{
|
||||
"config": {
|
||||
"name": "",
|
||||
"request": {}
|
||||
"name": "xxx",
|
||||
"variables": {}
|
||||
}
|
||||
"testcases": {
|
||||
"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:
|
||||
dict: loaded testsuite content
|
||||
{
|
||||
@@ -508,10 +527,21 @@ def load_testsuite(raw_testsuite):
|
||||
}
|
||||
|
||||
"""
|
||||
testcases = raw_testsuite["testcases"]
|
||||
for name, raw_testcase in testcases.items():
|
||||
__extend_with_testcase_ref(raw_testcase)
|
||||
raw_testcase.setdefault("name", name)
|
||||
raw_testcases = raw_testsuite.pop("testcases")
|
||||
raw_testsuite["testcases"] = {}
|
||||
|
||||
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
|
||||
|
||||
|
||||
@@ -316,17 +316,36 @@ class TestSuiteLoader(unittest.TestCase):
|
||||
self.assertEqual(len(loaded_content["teststeps"]), 2)
|
||||
|
||||
def test_load_test_file_testsuite(self):
|
||||
loaded_content = loader.load_test_file("tests/testsuites/create_users.yml")
|
||||
self.assertEqual(loaded_content["type"], "testsuite")
|
||||
for loaded_content in [
|
||||
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"]
|
||||
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."
|
||||
)
|
||||
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_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):
|
||||
path = os.path.join(
|
||||
|
||||
29
tests/testsuites/create_users.json
Normal file
29
tests/testsuites/create_users.json
Normal 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
tests/testsuites/create_users.v2.json
Normal file
31
tests/testsuites/create_users.v2.json
Normal 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
tests/testsuites/create_users.v2.yml
Normal file
24
tests/testsuites/create_users.v2.yml
Normal 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
|
||||
Reference in New Issue
Block a user