mirror of
https://github.com/httprunner/httprunner.git
synced 2026-09-05 23:51:25 +08:00
fix #131: parameter data driven with pair keys
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
__title__ = 'HttpRunner'
|
__title__ = 'HttpRunner'
|
||||||
__description__ = 'One-stop solution for HTTP(S) testing.'
|
__description__ = 'One-stop solution for HTTP(S) testing.'
|
||||||
__url__ = 'https://github.com/HttpRunner/HttpRunner'
|
__url__ = 'https://github.com/HttpRunner/HttpRunner'
|
||||||
__version__ = '1.3.6'
|
__version__ = '1.3.7'
|
||||||
__author__ = 'debugtalk'
|
__author__ = 'debugtalk'
|
||||||
__author_email__ = 'mail@debugtalk.com'
|
__author_email__ = 'mail@debugtalk.com'
|
||||||
__license__ = 'MIT'
|
__license__ = 'MIT'
|
||||||
|
|||||||
+11
-4
@@ -652,10 +652,17 @@ def parse_parameters(parameters, testset_path=None):
|
|||||||
# => [{"app_version": "2.8.5", "app_version": "2.8.6"}]
|
# => [{"app_version": "2.8.5", "app_version": "2.8.6"}]
|
||||||
# e.g. {"username-password": [["user1", "111111"], ["test2", "222222"]}
|
# e.g. {"username-password": [["user1", "111111"], ["test2", "222222"]}
|
||||||
# => [{"username": "user1", "password": "111111"}, {"username": "user2", "password": "222222"}]
|
# => [{"username": "user1", "password": "111111"}, {"username": "user2", "password": "222222"}]
|
||||||
parameter_content_list = [
|
parameter_content_list = []
|
||||||
dict(zip(parameter_name_list, [parameter_item]))
|
for parameter_item in parameter_content:
|
||||||
for parameter_item in parameter_content
|
if not isinstance(parameter_item, (list, tuple)):
|
||||||
]
|
# "2.8.5" => ["2.8.5"]
|
||||||
|
parameter_item = [parameter_item]
|
||||||
|
|
||||||
|
# ["app_version"], ["2.8.5"] => {"app_version": "2.8.5"}
|
||||||
|
# ["username", "password"], ["user1", "111111"] => {"username": "user1", "password": "111111"}
|
||||||
|
parameter_content_dict = dict(zip(parameter_name_list, parameter_item))
|
||||||
|
|
||||||
|
parameter_content_list.append(parameter_content_dict)
|
||||||
else:
|
else:
|
||||||
# (2) & (3)
|
# (2) & (3)
|
||||||
parsed_parameter_content = testcase_parser.eval_content_with_bindings(parameter_content)
|
parsed_parameter_content = testcase_parser.eval_content_with_bindings(parameter_content)
|
||||||
|
|||||||
@@ -2,6 +2,9 @@
|
|||||||
name: "user management testset."
|
name: "user management testset."
|
||||||
parameters:
|
parameters:
|
||||||
- user_agent: ["iOS/10.1", "iOS/10.2", "iOS/10.3"]
|
- user_agent: ["iOS/10.1", "iOS/10.2", "iOS/10.3"]
|
||||||
|
- username-password:
|
||||||
|
- ["test1","111111"]
|
||||||
|
- ["test2","222222"]
|
||||||
variables:
|
variables:
|
||||||
- device_sn: ${gen_random_string(15)}
|
- device_sn: ${gen_random_string(15)}
|
||||||
- os_platform: 'ios'
|
- os_platform: 'ios'
|
||||||
@@ -28,7 +31,7 @@
|
|||||||
# name: create user
|
# name: create user
|
||||||
# parameters:
|
# parameters:
|
||||||
# - user_id: [1001, 1002, 1003]
|
# - user_id: [1001, 1002, 1003]
|
||||||
# - username-password: ${parameterize(account.csv)}
|
# - username-password: ${P(account.csv)}
|
||||||
# api: create_user($user_id, $username, $password, $token)
|
# api: create_user($user_id, $username, $password, $token)
|
||||||
# validate:
|
# validate:
|
||||||
# - {"check": "status_code", "expect": 201}
|
# - {"check": "status_code", "expect": 201}
|
||||||
|
|||||||
@@ -165,5 +165,5 @@ class TestRunner(ApiServerUnittest):
|
|||||||
os.getcwd(), 'tests/data/demo_parameters.yml')
|
os.getcwd(), 'tests/data/demo_parameters.yml')
|
||||||
result = HttpRunner(testcase_file_path).run()
|
result = HttpRunner(testcase_file_path).run()
|
||||||
self.assertTrue(result["success"])
|
self.assertTrue(result["success"])
|
||||||
self.assertEqual(len(result["output"]), 3 * 2)
|
self.assertEqual(len(result["output"]), 3 * 2 * 2)
|
||||||
self.assertEqual(result["stat"]["testsRun"], 3 * 2)
|
self.assertEqual(result["stat"]["testsRun"], 3 * 2 * 2)
|
||||||
|
|||||||
@@ -108,13 +108,17 @@ class TestcaseParserUnittest(unittest.TestCase):
|
|||||||
def test_parse_parameters_raw_list(self):
|
def test_parse_parameters_raw_list(self):
|
||||||
parameters = [
|
parameters = [
|
||||||
{"user_agent": ["iOS/10.1", "iOS/10.2", "iOS/10.3"]},
|
{"user_agent": ["iOS/10.1", "iOS/10.2", "iOS/10.3"]},
|
||||||
{"username-password": [("user1", "111111"), ("test2", "222222")]}
|
{"username-password": [("user1", "111111"), ["test2", "222222"]]}
|
||||||
]
|
]
|
||||||
cartesian_product_parameters = testcase.parse_parameters(parameters)
|
cartesian_product_parameters = testcase.parse_parameters(parameters)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
len(cartesian_product_parameters),
|
len(cartesian_product_parameters),
|
||||||
3 * 2
|
3 * 2
|
||||||
)
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
cartesian_product_parameters[0],
|
||||||
|
{'user_agent': 'iOS/10.1', 'username': 'user1', 'password': '111111'}
|
||||||
|
)
|
||||||
|
|
||||||
def test_parse_parameters_parameterize(self):
|
def test_parse_parameters_parameterize(self):
|
||||||
parameters = [
|
parameters = [
|
||||||
|
|||||||
Reference in New Issue
Block a user