mirror of
https://github.com/httprunner/httprunner.git
synced 2026-06-09 17:59:36 +08:00
optimize response validation: if validation failed, then raise ValidationError directly
This commit is contained in:
@@ -163,17 +163,8 @@ class TestResponse(ApiServerUnittest):
|
||||
"resp_body_success": True
|
||||
}
|
||||
|
||||
diff_content_list = resp_obj.validate(validators, variables_mapping)
|
||||
self.assertFalse(resp_obj.success)
|
||||
self.assertEqual(
|
||||
diff_content_list,
|
||||
[
|
||||
{
|
||||
"check": "resp_status_code",
|
||||
"comparator": "eq", "expected": 201, "actual_value": 200
|
||||
}
|
||||
]
|
||||
)
|
||||
with self.assertRaises(exception.ValidationError):
|
||||
resp_obj.validate(validators, variables_mapping)
|
||||
|
||||
validators = [
|
||||
{"check": "resp_status_code", "comparator": "eq", "expected": 201},
|
||||
@@ -184,9 +175,7 @@ class TestResponse(ApiServerUnittest):
|
||||
"resp_body_success": True
|
||||
}
|
||||
|
||||
diff_content_list = resp_obj.validate(validators, variables_mapping)
|
||||
self.assertTrue(resp_obj.success)
|
||||
self.assertEqual(diff_content_list, [])
|
||||
self.assertTrue(resp_obj.validate(validators, variables_mapping))
|
||||
|
||||
def test_validate_exception(self):
|
||||
url = "http://127.0.0.1:5000/"
|
||||
@@ -199,7 +188,7 @@ class TestResponse(ApiServerUnittest):
|
||||
{"check": "body_success", "comparator": "eq"}
|
||||
]
|
||||
variables_mapping = {}
|
||||
with self.assertRaises(exception.ParamsError):
|
||||
with self.assertRaises(exception.ValidationError):
|
||||
resp_obj.validate(validators, variables_mapping)
|
||||
|
||||
# expected value missed in variables mapping
|
||||
@@ -210,5 +199,5 @@ class TestResponse(ApiServerUnittest):
|
||||
variables_mapping = {
|
||||
"resp_status_code": 200
|
||||
}
|
||||
with self.assertRaises(exception.ParamsError):
|
||||
with self.assertRaises(exception.ValidationError):
|
||||
resp_obj.validate(validators, variables_mapping)
|
||||
|
||||
@@ -25,16 +25,13 @@ class TestRunner(ApiServerUnittest):
|
||||
for testcase_file_path in self.testcase_file_path_list:
|
||||
testcases = utils.load_testcases(testcase_file_path)
|
||||
testcase = testcases[0]["test"]
|
||||
success, _ = self.test_runner.run_test(testcase)
|
||||
self.assertTrue(success)
|
||||
self.assertTrue(self.test_runner.run_test(testcase))
|
||||
|
||||
testcase = testcases[1]["test"]
|
||||
success, _ = self.test_runner.run_test(testcase)
|
||||
self.assertTrue(success)
|
||||
self.assertTrue(self.test_runner.run_test(testcase))
|
||||
|
||||
testcase = testcases[2]["test"]
|
||||
success, _ = self.test_runner.run_test(testcase)
|
||||
self.assertTrue(success)
|
||||
self.assertTrue(self.test_runner.run_test(testcase))
|
||||
|
||||
def test_run_single_testcase_fail(self):
|
||||
testcase = {
|
||||
@@ -62,26 +59,22 @@ class TestRunner(ApiServerUnittest):
|
||||
]
|
||||
}
|
||||
|
||||
success, diff_content_list = self.test_runner.run_test(testcase)
|
||||
self.assertFalse(success)
|
||||
self.assertEqual(
|
||||
diff_content_list[0],
|
||||
{"check": "status_code", "comparator": "eq", "expected": 205, 'actual_value': 200}
|
||||
)
|
||||
with self.assertRaises(exception.ValidationError):
|
||||
self.test_runner.run_test(testcase)
|
||||
|
||||
def test_run_testset_hardcode(self):
|
||||
for testcase_file_path in self.testcase_file_path_list:
|
||||
testsets = utils.load_testcases_by_path(testcase_file_path)
|
||||
results = self.test_runner.run_testset(testsets[0])
|
||||
self.assertEqual(len(results), 3)
|
||||
self.assertEqual(results, [(True, [])] * 3)
|
||||
self.assertEqual(results, [True] * 3)
|
||||
|
||||
def test_run_testsets_hardcode(self):
|
||||
for testcase_file_path in self.testcase_file_path_list:
|
||||
testsets = utils.load_testcases_by_path(testcase_file_path)
|
||||
results = self.test_runner.run_testsets(testsets)
|
||||
self.assertEqual(len(results), 1)
|
||||
self.assertEqual(results, [[(True, [])] * 3])
|
||||
self.assertEqual(results, [[True] * 3])
|
||||
|
||||
def test_run_testset_template_variables(self):
|
||||
testcase_file_path = os.path.join(
|
||||
@@ -89,7 +82,7 @@ class TestRunner(ApiServerUnittest):
|
||||
testsets = utils.load_testcases_by_path(testcase_file_path)
|
||||
results = self.test_runner.run_testset(testsets[0])
|
||||
self.assertEqual(len(results), 3)
|
||||
self.assertEqual(results, [(True, [])] * 3)
|
||||
self.assertEqual(results, [True] * 3)
|
||||
|
||||
def test_run_testset_template_import_functions(self):
|
||||
testcase_file_path = os.path.join(
|
||||
@@ -97,7 +90,7 @@ class TestRunner(ApiServerUnittest):
|
||||
testsets = utils.load_testcases_by_path(testcase_file_path)
|
||||
results = self.test_runner.run_testset(testsets[0])
|
||||
self.assertEqual(len(results), 3)
|
||||
self.assertEqual(results, [(True, [])] * 3)
|
||||
self.assertEqual(results, [True] * 3)
|
||||
|
||||
def test_run_testsets_template_import_functions(self):
|
||||
testcase_file_path = os.path.join(
|
||||
@@ -105,7 +98,7 @@ class TestRunner(ApiServerUnittest):
|
||||
testsets = utils.load_testcases_by_path(testcase_file_path)
|
||||
results = self.test_runner.run_testsets(testsets)
|
||||
self.assertEqual(len(results), 1)
|
||||
self.assertEqual(results, [[(True, [])] * 3])
|
||||
self.assertEqual(results, [[True] * 3])
|
||||
|
||||
def test_run_testsets_template_lambda_functions(self):
|
||||
testcase_file_path = os.path.join(
|
||||
@@ -113,4 +106,4 @@ class TestRunner(ApiServerUnittest):
|
||||
testsets = utils.load_testcases_by_path(testcase_file_path)
|
||||
results = self.test_runner.run_testsets(testsets)
|
||||
self.assertEqual(len(results), 1)
|
||||
self.assertEqual(results, [[(True, [])] * 3])
|
||||
self.assertEqual(results, [[True] * 3])
|
||||
|
||||
@@ -158,8 +158,12 @@ class TestUtils(ApiServerUnittest):
|
||||
self.assertTrue(utils.match_expected(1, 1, "eq"))
|
||||
self.assertTrue(utils.match_expected("abc", "abc", "eq"))
|
||||
self.assertTrue(utils.match_expected("abc", "abc"))
|
||||
self.assertFalse(utils.match_expected(123, "123", "eq"))
|
||||
self.assertFalse(utils.match_expected(123, "123"))
|
||||
|
||||
with self.assertRaises(exception.ValidationError):
|
||||
utils.match_expected(123, "123", "eq")
|
||||
|
||||
with self.assertRaises(exception.ValidationError):
|
||||
utils.match_expected(123, "123")
|
||||
|
||||
self.assertTrue(utils.match_expected("123", 3, "len_eq"))
|
||||
self.assertTrue(utils.match_expected(123, "123", "str_eq"))
|
||||
@@ -179,7 +183,8 @@ class TestUtils(ApiServerUnittest):
|
||||
self.assertTrue(utils.match_expected("3ab", "123abc456", "contained_by"))
|
||||
|
||||
self.assertTrue(utils.match_expected("123abc456", "^123.*456$", "regex"))
|
||||
self.assertFalse(utils.match_expected("123abc456", "^12b.*456$", "regex"))
|
||||
with self.assertRaises(exception.ValidationError):
|
||||
utils.match_expected("123abc456", "^12b.*456$", "regex")
|
||||
|
||||
with self.assertRaises(exception.ParamsError):
|
||||
utils.match_expected(1, 2, "not_supported_comparator")
|
||||
|
||||
Reference in New Issue
Block a user