feat: 'extract' is used to replace 'output' when passing former teststep's (as a testcase) export value to next teststep

This commit is contained in:
debugtalk
2019-06-26 22:15:58 +08:00
parent d7ca38056d
commit f0df345c34
9 changed files with 102 additions and 23 deletions

View File

@@ -1,5 +1,11 @@
# Release History
## 2.2.2 (2019-06-26)
**Features**
- `extract` is used to replace `output` when passing former teststep's (as a testcase) export value to next teststep
## 2.2.1 (2019-06-25)
**Features**

View File

@@ -1,7 +1,7 @@
__title__ = 'HttpRunner'
__description__ = 'One-stop solution for HTTP(S) testing.'
__url__ = 'https://github.com/HttpRunner/HttpRunner'
__version__ = '2.2.1'
__version__ = '2.2.2'
__author__ = 'debugtalk'
__author_email__ = 'mail@debugtalk.com'
__license__ = 'Apache-2.0'

View File

@@ -942,7 +942,13 @@ def __prepare_testcase_tests(tests, config, project_mapping, session_variables_s
if "testcase_def" in test_dict:
# test_dict is nested testcase
if "output" in test_dict:
# pass former teststep's (as a testcase) export value to next teststep
# Since V2.2.2, `extract` is used to replace `output`,
# `output` is also kept for compatibility
if "extract" in test_dict:
session_variables_set |= set(test_dict["extract"])
elif "output" in test_dict:
# kept for compatibility
session_variables_set |= set(test_dict["output"])
# 2, testcase test_dict => testcase_def config

View File

@@ -636,23 +636,28 @@ class TestApi(ApiServerUnittest):
self.assertEqual(len(tests_results[0][1].records), 2)
def test_testcase_complex_run_suite(self):
testcase_path = "tests/testcases/create_user.yml"
tests_mapping = loader.load_tests(testcase_path)
testcases = parser.parse_tests(tests_mapping)
runner = HttpRunner()
test_suite = runner._add_tests(testcases)
tests_results = runner._run_suite(test_suite)
self.assertEqual(len(tests_results[0][1].records), 2)
for testcase_path in [
"tests/testcases/create_user.yml",
"tests/testcases/create_user.v2.yml",
"tests/testcases/create_user.json",
"tests/testcases/create_user.v2.json"
]:
tests_mapping = loader.load_tests(testcase_path)
testcases = parser.parse_tests(tests_mapping)
runner = HttpRunner()
test_suite = runner._add_tests(testcases)
tests_results = runner._run_suite(test_suite)
self.assertEqual(len(tests_results[0][1].records), 2)
results = tests_results[0][1]
self.assertEqual(
results.records[0]["name"],
"setup and reset all (override) for TESTCASE_CREATE_XXX."
)
self.assertEqual(
results.records[1]["name"],
"create user and check result."
)
results = tests_results[0][1]
self.assertEqual(
results.records[0]["name"],
"setup and reset all (override) for TESTCASE_CREATE_XXX."
)
self.assertEqual(
results.records[1]["name"],
"create user and check result."
)
def test_testsuite_loader(self):
testcase_path = "tests/testsuites/create_users.yml"

View File

@@ -271,8 +271,7 @@ class TestSuiteLoader(unittest.TestCase):
"testcase": "testcases/setup.yml",
"variables": [
{"device_sn": "$device_sn"}
],
"output": ["token", "device_sn"]
]
}
testcase = loader.load_teststep(raw_test)
self.assertEqual(

View File

@@ -0,0 +1,34 @@
[
{
"config": {
"id": "create_user",
"variables": {
"device_sn": "TESTCASE_CREATE_XXX",
"uid": 9001
},
"output": [
"session_token"
],
"base_url": "http://127.0.0.1:5000",
"name": "create user and check result."
}
},
{
"test": {
"testcase": "testcases/setup.yml",
"extract": [
"session_token"
],
"name": "setup and reset all (override) for $device_sn."
}
},
{
"test": {
"testcase": "testcases/deps/check_and_create.yml",
"variables": {
"token": "$session_token"
},
"name": "create user and check result."
}
}
]

View File

@@ -0,0 +1,30 @@
{
"config": {
"id": "create_user",
"variables": {
"device_sn": "TESTCASE_CREATE_XXX",
"uid": 9001
},
"output": [
"session_token"
],
"base_url": "http://127.0.0.1:5000",
"name": "create user and check result."
},
"teststeps": [
{
"testcase": "testcases/setup.yml",
"extract": [
"session_token"
],
"name": "setup and reset all (override) for $device_sn."
},
{
"testcase": "testcases/deps/check_and_create.yml",
"variables": {
"token": "$session_token"
},
"name": "create user and check result."
}
]
}

View File

@@ -12,9 +12,8 @@ teststeps:
-
name: setup and reset all (override) for $device_sn.
testcase: testcases/setup.yml
output:
extract:
- session_token
-
name: create user and check result.
variables:

View File

@@ -12,7 +12,7 @@
- test:
name: setup and reset all (override) for $device_sn.
testcase: testcases/setup.yml
output:
extract:
- session_token
- test: