From 7fc3280584cb64e8541f2ff38fc9d68823949dfe Mon Sep 17 00:00:00 2001 From: debugtalk Date: Tue, 25 Jun 2019 15:51:24 +0800 Subject: [PATCH] fix: extend with testcase reference in format version 2 --- CHANGELOG.md | 6 ++++++ httprunner/__about__.py | 2 +- httprunner/loader.py | 13 ++++++++++++- tests/testcases/create_user.v2.yml | 22 ++++++++++++++++++++++ tests/testsuites/create_users.v2.json | 4 ++-- tests/testsuites/create_users.v2.yml | 4 ++-- 6 files changed, 45 insertions(+), 6 deletions(-) create mode 100644 tests/testcases/create_user.v2.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b0f541c..9198cec6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Release History +## 2.2.1 (2019-06-25) + +**Bugfixes** + +- fix extend with testcase reference in format version 2 + ## 2.2.0 (2019-06-24) **Features** diff --git a/httprunner/__about__.py b/httprunner/__about__.py index e3bd235e..df64ac93 100644 --- a/httprunner/__about__.py +++ b/httprunner/__about__.py @@ -1,7 +1,7 @@ __title__ = 'HttpRunner' __description__ = 'One-stop solution for HTTP(S) testing.' __url__ = 'https://github.com/HttpRunner/HttpRunner' -__version__ = '2.2.0' +__version__ = '2.2.1' __author__ = 'debugtalk' __author_email__ = 'mail@debugtalk.com' __license__ = 'Apache-2.0' diff --git a/httprunner/loader.py b/httprunner/loader.py index 4093bb37..8f1aadb7 100644 --- a/httprunner/loader.py +++ b/httprunner/loader.py @@ -332,7 +332,18 @@ def __extend_with_testcase_ref(raw_testinfo): project_mapping["PWD"], *testcase_path.split("/") ) - testcase_dict = load_testcase(load_file(testcase_path)) + loaded_testcase = load_file(testcase_path) + + if isinstance(loaded_testcase, list): + # make compatible with version < 2.2.0 + testcase_dict = load_testcase(loaded_testcase) + elif isinstance(loaded_testcase, dict) and "teststeps" in loaded_testcase: + # format version 2, implemented in 2.2.0 + testcase_dict = load_testcase_v2(loaded_testcase) + else: + raise exceptions.FileFormatError( + "Invalid format testcase: {}".format(testcase_path)) + tests_def_mapping[testcase_path] = testcase_dict else: testcase_dict = tests_def_mapping[testcase_path] diff --git a/tests/testcases/create_user.v2.yml b/tests/testcases/create_user.v2.yml new file mode 100644 index 00000000..7f34c532 --- /dev/null +++ b/tests/testcases/create_user.v2.yml @@ -0,0 +1,22 @@ +config: + name: "create user and check result." + id: create_user + base_url: "http://127.0.0.1:5000" + variables: + uid: 9001 + device_sn: "TESTCASE_CREATE_XXX" + output: + - session_token + +teststeps: +- + name: setup and reset all (override) for $device_sn. + testcase: testcases/setup.yml + output: + - session_token + +- + name: create user and check result. + variables: + token: $session_token + testcase: testcases/deps/check_and_create.yml diff --git a/tests/testsuites/create_users.v2.json b/tests/testsuites/create_users.v2.json index de4d5d27..450a27aa 100644 --- a/tests/testsuites/create_users.v2.json +++ b/tests/testsuites/create_users.v2.json @@ -11,7 +11,7 @@ "testcases": [ { "name": "create user 1000 and check result.", - "testcase": "testcases/create_user.yml", + "testcase": "testcases/create_user.v2.yml", "variables": { "var_d": "$var_c", "var_c": "${gen_random_string(5)}", @@ -20,7 +20,7 @@ }, { "name": "create user 1001 and check result.", - "testcase": "testcases/create_user.yml", + "testcase": "testcases/create_user.v2.yml", "variables": { "var_d": "$var_c", "var_c": "${gen_random_string(5)}", diff --git a/tests/testsuites/create_users.v2.yml b/tests/testsuites/create_users.v2.yml index 0714d82f..8fcdd930 100644 --- a/tests/testsuites/create_users.v2.yml +++ b/tests/testsuites/create_users.v2.yml @@ -9,7 +9,7 @@ config: testcases: - name: create user 1000 and check result. - testcase: testcases/create_user.yml + testcase: testcases/create_user.v2.yml variables: uid: 1000 var_c: ${gen_random_string(5)} @@ -17,7 +17,7 @@ testcases: - name: create user 1001 and check result. - testcase: testcases/create_user.yml + testcase: testcases/create_user.v2.yml variables: uid: 1001 var_c: ${gen_random_string(5)}