mirror of https://github.com/scrapy/scrapy.git
test #3 Increased branch coverage for form.py
This commit is contained in:
parent
ba8993ec09
commit
e27d320c3c
|
|
@ -1642,6 +1642,62 @@ class JsonRequestTest(RequestTest):
|
|||
self.assertEqual(kwargs["ensure_ascii"], True)
|
||||
self.assertEqual(kwargs["allow_nan"], True)
|
||||
|
||||
def test_form_response_with_invalid_formdata_type_error(self):
|
||||
"""Test that a form response with invalid form data throws a type error"""
|
||||
response = _buildresponse(
|
||||
"""<html><body>
|
||||
<form action="/submit" method="post">
|
||||
<input type="text" name="test" value="value">
|
||||
</form>
|
||||
</body></html>"""
|
||||
)
|
||||
with self.assertRaises(ValueError) as context:
|
||||
FormRequest.from_response(response, formdata=123)
|
||||
|
||||
self.assertIn(
|
||||
"formdata should be a dict or iterable of tuples", str(context.exception)
|
||||
)
|
||||
|
||||
def test_form_response_with_custom_invalid_formdata_value_error(self):
|
||||
"""Test that a form response with invalid form data throws a value error"""
|
||||
response = _buildresponse(
|
||||
"""<html><body>
|
||||
<form action="/submit" method="post">
|
||||
<input type="text" name="test" value="value">
|
||||
</form>
|
||||
</body></html>"""
|
||||
)
|
||||
|
||||
class CustomFormdata:
|
||||
def __iter__(self):
|
||||
raise ValueError("Custom iteration error for testing")
|
||||
|
||||
with self.assertRaises(ValueError) as context:
|
||||
FormRequest.from_response(response, formdata=CustomFormdata())
|
||||
|
||||
self.assertIn(
|
||||
"formdata should be a dict or iterable of tuples", str(context.exception)
|
||||
)
|
||||
|
||||
def test_get_form_with_xpath_no_form_parent(self):
|
||||
"""Test that _get_from raised a ValueError when an XPath selects an element
|
||||
not nested within a <form> and no <form> parent is found"""
|
||||
response = _buildresponse(
|
||||
"""<html><body>
|
||||
<div id="outside-form">
|
||||
<p>This paragraph is not inside a form.</p>
|
||||
</div>
|
||||
<form action="/submit" method="post">
|
||||
<input type="text" name="inside-form" value="">
|
||||
</form>
|
||||
</body></html>"""
|
||||
)
|
||||
|
||||
with self.assertRaises(ValueError) as context:
|
||||
FormRequest.from_response(response, formxpath='//div[@id="outside-form"]/p')
|
||||
|
||||
self.assertIn("No <form> element found with", str(context.exception))
|
||||
|
||||
def tearDown(self):
|
||||
warnings.resetwarnings()
|
||||
super().tearDown()
|
||||
|
|
|
|||
Loading…
Reference in New Issue