Fixed issue11082 - Reject str for POST data with a TypeError. Document the need to explicitly encode to bytes when using urlencode.
diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py
index 17323d5..1433670 100644
--- a/Lib/test/test_urllib2.py
+++ b/Lib/test/test_urllib2.py
@@ -794,6 +794,10 @@
         http.raise_on_endheaders = True
         self.assertRaises(urllib.error.URLError, h.do_open, http, req)
 
+        # Check for TypeError on POST data which is str.
+        req = Request("http://example.com/","badpost")
+        self.assertRaises(TypeError, h.do_request_, req)
+
         # check adding of standard headers
         o.addheaders = [("Spam", "eggs")]
         for data in b"", None:  # POST, GET
@@ -837,10 +841,11 @@
             else:
                 newreq = h.do_request_(req)
 
-        # A file object
+        # A file object.
+        # Test only Content-Length attribute of request.
 
-        file_obj = io.StringIO()
-        file_obj.write("Something\nSomething\nSomething\n")
+        file_obj = io.BytesIO()
+        file_obj.write(b"Something\nSomething\nSomething\n")
 
         for headers in {}, {"Content-Length": 30}:
             req = Request("http://example.com/", file_obj, headers)
@@ -863,7 +868,6 @@
             newreq = h.do_request_(req)
             self.assertEqual(int(newreq.get_header('Content-length')),16)
 
-
     def test_http_doubleslash(self):
         # Checks the presence of any unnecessary double slash in url does not
         # break anything. Previously, a double slash directly after the host