[Python-checkins] bpo-31258: test_urllib2_localnet uses addCleanup(server.stop) (#3184)

Victor Stinner webhook-mailer at python.org
Tue Aug 22 10:51:23 EDT 2017


https://github.com/python/cpython/commit/02e03672e6766b1da847b1635982a70346780744
commit: 02e03672e6766b1da847b1635982a70346780744
branch: 2.7
author: Victor Stinner <victor.stinner at gmail.com>
committer: GitHub <noreply at github.com>
date: 2017年08月22日T16:51:20+02:00
summary:
bpo-31258: test_urllib2_localnet uses addCleanup(server.stop) (#3184)
Use self.addCleanup(self.server.stop) to stop the HTTP server. Some
tests didn't stop the server like test_https().
files:
M Lib/test/test_urllib2_localnet.py
diff --git a/Lib/test/test_urllib2_localnet.py b/Lib/test/test_urllib2_localnet.py
index 9199cb93100..061233f9f2f 100644
--- a/Lib/test/test_urllib2_localnet.py
+++ b/Lib/test/test_urllib2_localnet.py
@@ -278,6 +278,7 @@ def setUp(self):
 self._threads = test_support.threading_setup()
 
 def tearDown(self):
+ self.doCleanups()
 test_support.threading_cleanup(*self._threads)
 
 
@@ -296,10 +297,7 @@ def http_server_with_basic_auth_handler(*args, **kwargs):
 self.server_url = 'http://127.0.0.1:%s' % self.server.port
 self.server.start()
 self.server.ready.wait()
-
- def tearDown(self):
- self.server.stop()
- super(BasicAuthTests, self).tearDown()
+ self.addCleanup(self.server.stop)
 
 def test_basic_auth_success(self):
 ah = urllib2.HTTPBasicAuthHandler()
@@ -347,15 +345,12 @@ def create_fake_proxy_handler(*args, **kwargs):
 self.server = LoopbackHttpServerThread(create_fake_proxy_handler)
 self.server.start()
 self.server.ready.wait()
+ self.addCleanup(self.server.stop)
 proxy_url = "http://127.0.0.1:%d" % self.server.port
 handler = urllib2.ProxyHandler({"http" : proxy_url})
 self.proxy_digest_handler = urllib2.ProxyDigestAuthHandler()
 self.opener = urllib2.build_opener(handler, self.proxy_digest_handler)
 
- def tearDown(self):
- self.server.stop()
- super(ProxyAuthTests, self).tearDown()
-
 def test_proxy_with_bad_password_raises_httperror(self):
 self.proxy_digest_handler.add_password(self.REALM, self.URL,
 self.USER, self.PASSWD+"bad")
@@ -472,6 +467,7 @@ def start_server(self, responses):
 self.server = LoopbackHttpServerThread(handler)
 self.server.start()
 self.server.ready.wait()
+ self.addCleanup(self.server.stop)
 port = self.server.port
 handler.port = port
 return handler
@@ -496,15 +492,12 @@ def test_redirection(self):
 
 handler = self.start_server(responses)
 
- try:
- f = urllib2.urlopen('http://localhost:%s/' % handler.port)
- data = f.read()
- f.close()
+ f = urllib2.urlopen('http://localhost:%s/' % handler.port)
+ data = f.read()
+ f.close()
 
- self.assertEqual(data, expected_response)
- self.assertEqual(handler.requests, ['/', '/somewhere_else'])
- finally:
- self.server.stop()
+ self.assertEqual(data, expected_response)
+ self.assertEqual(handler.requests, ['/', '/somewhere_else'])
 
 
 def test_404(self):
@@ -512,49 +505,40 @@ def test_404(self):
 handler = self.start_server([(404, [], expected_response)])
 
 try:
- try:
- urllib2.urlopen('http://localhost:%s/weeble' % handler.port)
- except urllib2.URLError, f:
- pass
- else:
- self.fail('404 should raise URLError')
+ urllib2.urlopen('http://localhost:%s/weeble' % handler.port)
+ except urllib2.URLError, f:
+ pass
+ else:
+ self.fail('404 should raise URLError')
 
- data = f.read()
- f.close()
+ data = f.read()
+ f.close()
 
- self.assertEqual(data, expected_response)
- self.assertEqual(handler.requests, ['/weeble'])
- finally:
- self.server.stop()
+ self.assertEqual(data, expected_response)
+ self.assertEqual(handler.requests, ['/weeble'])
 
 
 def test_200(self):
 expected_response = 'pycon 2008...'
 handler = self.start_server([(200, [], expected_response)])
 
- try:
- f = urllib2.urlopen('http://localhost:%s/bizarre' % handler.port)
- data = f.read()
- f.close()
+ f = urllib2.urlopen('http://localhost:%s/bizarre' % handler.port)
+ data = f.read()
+ f.close()
 
- self.assertEqual(data, expected_response)
- self.assertEqual(handler.requests, ['/bizarre'])
- finally:
- self.server.stop()
+ self.assertEqual(data, expected_response)
+ self.assertEqual(handler.requests, ['/bizarre'])
 
 def test_200_with_parameters(self):
 expected_response = 'pycon 2008...'
 handler = self.start_server([(200, [], expected_response)])
 
- try:
- f = urllib2.urlopen('http://localhost:%s/bizarre' % handler.port, 'get=with_feeling')
- data = f.read()
- f.close()
+ f = urllib2.urlopen('http://localhost:%s/bizarre' % handler.port, 'get=with_feeling')
+ data = f.read()
+ f.close()
 
- self.assertEqual(data, expected_response)
- self.assertEqual(handler.requests, ['/bizarre', 'get=with_feeling'])
- finally:
- self.server.stop()
+ self.assertEqual(data, expected_response)
+ self.assertEqual(handler.requests, ['/bizarre', 'get=with_feeling'])
 
 def test_https(self):
 handler = self.start_https_server()
@@ -603,52 +587,40 @@ def cb_sni(ssl_sock, server_name, initial_context):
 def test_sending_headers(self):
 handler = self.start_server([(200, [], "we don't care")])
 
- try:
- req = urllib2.Request("http://localhost:%s/" % handler.port,
- headers={'Range': 'bytes=20-39'})
- urllib2.urlopen(req)
- self.assertEqual(handler.headers_received['Range'], 'bytes=20-39')
- finally:
- self.server.stop()
+ req = urllib2.Request("http://localhost:%s/" % handler.port,
+ headers={'Range': 'bytes=20-39'})
+ urllib2.urlopen(req)
+ self.assertEqual(handler.headers_received['Range'], 'bytes=20-39')
 
 def test_basic(self):
 handler = self.start_server([(200, [], "we don't care")])
 
+ open_url = urllib2.urlopen("http://localhost:%s" % handler.port)
+ for attr in ("read", "close", "info", "geturl"):
+ self.assertTrue(hasattr(open_url, attr), "object returned from "
+ "urlopen lacks the %s attribute" % attr)
 try:
- open_url = urllib2.urlopen("http://localhost:%s" % handler.port)
- for attr in ("read", "close", "info", "geturl"):
- self.assertTrue(hasattr(open_url, attr), "object returned from "
- "urlopen lacks the %s attribute" % attr)
- try:
- self.assertTrue(open_url.read(), "calling 'read' failed")
- finally:
- open_url.close()
+ self.assertTrue(open_url.read(), "calling 'read' failed")
 finally:
- self.server.stop()
+ open_url.close()
 
 def test_info(self):
 handler = self.start_server([(200, [], "we don't care")])
 
- try:
- open_url = urllib2.urlopen("http://localhost:%s" % handler.port)
- info_obj = open_url.info()
- self.assertIsInstance(info_obj, mimetools.Message,
- "object returned by 'info' is not an "
- "instance of mimetools.Message")
- self.assertEqual(info_obj.getsubtype(), "plain")
- finally:
- self.server.stop()
+ open_url = urllib2.urlopen("http://localhost:%s" % handler.port)
+ info_obj = open_url.info()
+ self.assertIsInstance(info_obj, mimetools.Message,
+ "object returned by 'info' is not an "
+ "instance of mimetools.Message")
+ self.assertEqual(info_obj.getsubtype(), "plain")
 
 def test_geturl(self):
 # Make sure same URL as opened is returned by geturl.
 handler = self.start_server([(200, [], "we don't care")])
 
- try:
- open_url = urllib2.urlopen("http://localhost:%s" % handler.port)
- url = open_url.geturl()
- self.assertEqual(url, "http://localhost:%s" % handler.port)
- finally:
- self.server.stop()
+ open_url = urllib2.urlopen("http://localhost:%s" % handler.port)
+ url = open_url.geturl()
+ self.assertEqual(url, "http://localhost:%s" % handler.port)
 
 
 def test_bad_address(self):
@@ -682,26 +654,21 @@ def test_bad_address(self):
 def test_iteration(self):
 expected_response = "pycon 2008..."
 handler = self.start_server([(200, [], expected_response)])
- try:
- data = urllib2.urlopen("http://localhost:%s" % handler.port)
- for line in data:
- self.assertEqual(line, expected_response)
- finally:
- self.server.stop()
+
+ data = urllib2.urlopen("http://localhost:%s" % handler.port)
+ for line in data:
+ self.assertEqual(line, expected_response)
 
 def ztest_line_iteration(self):
 lines = ["We\n", "got\n", "here\n", "verylong " * 8192 + "\n"]
 expected_response = "".join(lines)
 handler = self.start_server([(200, [], expected_response)])
- try:
- data = urllib2.urlopen("http://localhost:%s" % handler.port)
- for index, line in enumerate(data):
- self.assertEqual(line, lines[index],
- "Fetched line number %s doesn't match expected:\n"
- " Expected length was %s, got %s" %
- (index, len(lines[index]), len(line)))
- finally:
- self.server.stop()
+ data = urllib2.urlopen("http://localhost:%s" % handler.port)
+ for index, line in enumerate(data):
+ self.assertEqual(line, lines[index],
+ "Fetched line number %s doesn't match expected:\n"
+ " Expected length was %s, got %s" %
+ (index, len(lines[index]), len(line)))
 self.assertEqual(index + 1, len(lines))
 
 def test_main():


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /