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