Best Python code snippet using playwright-python
response.py
Source:response.py
...110 elif self.reason_phrase is None:111 self.reason_phrase = REASON_PHRASES.get(self.status_code,112 'UNKNOWN STATUS CODE')113 self['Content-Type'] = content_type114 def serialize_headers(self):115 """HTTP headers as a bytestring."""116 def to_bytes(val, encoding):117 return val if isinstance(val, bytes) else val.encode(encoding)118 headers = [119 (b': '.join([to_bytes(key, 'ascii'), to_bytes(value, 'latin-1')]))120 for key, value in self._headers.values()121 ]122 return b'\r\n'.join(headers)123 if six.PY3:124 __bytes__ = serialize_headers125 else:126 __str__ = serialize_headers127 def _convert_to_charset(self, value, charset, mime_encode=False):128 """Converts headers key/value to ascii/latin-1 native strings.129 `charset` must be 'ascii' or 'latin-1'. If `mime_encode` is True and130 `value` value can't be represented in the given charset, MIME-encoding131 is applied.132 """133 if not isinstance(value, (bytes, six.text_type)):134 value = str(value)135 try:136 if six.PY3:137 if isinstance(value, str):138 # Ensure string is valid in given charset139 value.encode(charset)140 else:141 # Convert bytestring using given charset142 value = value.decode(charset)143 else:144 if isinstance(value, str):145 # Ensure string is valid in given charset146 value.decode(charset)147 else:148 # Convert unicode string to given charset149 value = value.encode(charset)150 except UnicodeError as e:151 if mime_encode:152 # Wrapping in str() is a workaround for #12422 under Python 2.153 value = str(Header(value, 'utf-8').encode())154 else:155 e.reason += ', HTTP response headers must be in %s format' % charset156 raise157 if str('\n') in value or str('\r') in value:158 raise BadHeaderError("Header values can't contain newlines (got %r)" % value)159 return value160 def __setitem__(self, header, value):161 header = self._convert_to_charset(header, 'ascii')162 value = self._convert_to_charset(value, 'latin-1', mime_encode=True)163 self._headers[header.lower()] = (header, value)164 def __delitem__(self, header):165 try:166 del self._headers[header.lower()]167 except KeyError:168 pass169 def __getitem__(self, header):170 return self._headers[header.lower()][1]171 def __getstate__(self):172 # SimpleCookie is not pickeable with pickle.HIGHEST_PROTOCOL, so we173 # serialise to a string instead174 state = self.__dict__.copy()175 state['cookies'] = str(state['cookies'])176 return state177 def __setstate__(self, state):178 self.__dict__.update(state)179 self.cookies = SimpleCookie(self.cookies)180 def has_header(self, header):181 """Case-insensitive check for a header."""182 return header.lower() in self._headers183 __contains__ = has_header184 def items(self):185 return self._headers.values()186 def get(self, header, alternate=None):187 return self._headers.get(header.lower(), (None, alternate))[1]188 def set_cookie(self, key, value='', max_age=None, expires=None, path='/',189 domain=None, secure=False, httponly=False):190 """191 Sets a cookie.192 ``expires`` can be:193 - a string in the correct format,194 - a naive ``datetime.datetime`` object in UTC,195 - an aware ``datetime.datetime`` object in any time zone.196 If it is a ``datetime.datetime`` object then ``max_age`` will be calculated.197 """198 self.cookies[key] = value199 if expires is not None:200 if isinstance(expires, datetime.datetime):201 if timezone.is_aware(expires):202 expires = timezone.make_naive(expires, timezone.utc)203 delta = expires - expires.utcnow()204 # Add one second so the date matches exactly (a fraction of205 # time gets lost between converting to a timedelta and206 # then the date string).207 delta = delta + datetime.timedelta(seconds=1)208 # Just set max_age - the max_age logic will set expires.209 expires = None210 max_age = max(0, delta.days * 86400 + delta.seconds)211 else:212 self.cookies[key]['expires'] = expires213 if max_age is not None:214 self.cookies[key]['max-age'] = max_age215 # IE requires expires, so set it if hasn't been already.216 if not expires:217 self.cookies[key]['expires'] = cookie_date(time.time() +218 max_age)219 if path is not None:220 self.cookies[key]['path'] = path221 if domain is not None:222 self.cookies[key]['domain'] = domain223 if secure:224 self.cookies[key]['secure'] = True225 if httponly:226 self.cookies[key]['httponly'] = True227 def set_signed_cookie(self, key, value, salt='', **kwargs):228 value = signing.get_cookie_signer(salt=key + salt).sign(value)229 return self.set_cookie(key, value, **kwargs)230 def delete_cookie(self, key, path='/', domain=None):231 self.set_cookie(key, max_age=0, path=path, domain=domain,232 expires='Thu, 01-Jan-1970 00:00:00 GMT')233 # Common methods used by subclasses234 def make_bytes(self, value):235 """Turn a value into a bytestring encoded in the output charset."""236 # Per PEP 3333, this response body must be bytes. To avoid returning237 # an instance of a subclass, this function returns `bytes(value)`.238 # This doesn't make a copy when `value` already contains bytes.239 # If content is already encoded (eg. gzip), assume bytes.240 if self.has_header('Content-Encoding'):241 return bytes(value)242 # Handle string types -- we can't rely on force_bytes here because:243 # - under Python 3 it attemps str conversion first244 # - when self._charset != 'utf-8' it re-encodes the content245 if isinstance(value, bytes):246 return bytes(value)247 if isinstance(value, six.text_type):248 return bytes(value.encode(self._charset))249 # Handle non-string types (#16494)250 return force_bytes(value, self._charset)251 def __iter__(self):252 return self253 def __next__(self):254 # Subclasses must define self._iterator for this function.255 return self.make_bytes(next(self._iterator))256 # These methods partially implement the file-like object interface.257 # See http://docs.python.org/lib/bltin-file-objects.html258 # The WSGI server must call this method upon completion of the request.259 # See http://blog.dscpl.com.au/2012/10/obligations-for-calling-close-on.html260 def close(self):261 for closable in self._closable_objects:262 try:263 closable.close()264 except Exception:265 pass266 signals.request_finished.send(sender=self._handler_class)267 def write(self, content):268 raise Exception("This %s instance is not writable" % self.__class__.__name__)269 def flush(self):270 pass271 def tell(self):272 raise Exception("This %s instance cannot tell its position" % self.__class__.__name__)273class HttpResponse(HttpResponseBase):274 """275 An HTTP response class with a string as content.276 This content that can be read, appended to or replaced.277 """278 streaming = False279 def __init__(self, content=b'', *args, **kwargs):280 super(HttpResponse, self).__init__(*args, **kwargs)281 # Content is a bytestring. See the `content` property methods.282 self.content = content283 def serialize(self):284 """Full HTTP message, including headers, as a bytestring."""285 return self.serialize_headers() + b'\r\n\r\n' + self.content286 if six.PY3:287 __bytes__ = serialize288 else:289 __str__ = serialize290 def _consume_content(self):291 # If the response was instantiated with an iterator, when its content292 # is accessed, the iterator is going be exhausted and the content293 # loaded in memory. At this point, it's better to abandon the original294 # iterator and save the content for later reuse. This is a temporary295 # solution. See the comment in __iter__ below for the long term plan.296 if self._base_content_is_iter:297 self.content = b''.join(self.make_bytes(e) for e in self._container)298 @property299 def content(self):...
response.pyi
Source:response.pyi
...51 reason: Optional[str] = ...,52 charset: Optional[str] = ...,53 headers: Optional[Dict[str, str]] = ...,54 ) -> None: ...55 def serialize_headers(self) -> bytes: ...56 __bytes__ = serialize_headers57 def __setitem__(self, header: Union[str, bytes], value: Union[str, bytes, int]) -> None: ...58 def __delitem__(self, header: Union[str, bytes]) -> None: ...59 def __getitem__(self, header: Union[str, bytes]) -> str: ...60 def has_header(self, header: str) -> bool: ...61 def items(self) -> Iterable[Tuple[str, str]]: ...62 @overload63 def get(self, header: Union[str, bytes], alternate: Optional[str]) -> str: ...64 @overload65 def get(self, header: Union[str, bytes]) -> Optional[str]: ...66 def set_cookie(67 self,68 key: str,69 value: str = ...,...
tests.py
Source:tests.py
...31 site=get_current_site(request), uses_regex=True)32 redirect.save()33 new_response = self.run_redirect(request)34 self.assertEqual(new_response.status_code, 301)35 self.assertIn(b"somethingelse", new_response.serialize_headers())36 def test_redirect_request_gone(self):37 # Create a redirect38 request = self.factory.get('/test/123/')39 redirect = Redirect(from_url=r'test/(?P<pk>\d+)/', to_url='',40 site=get_current_site(request), uses_regex=True)41 redirect.save()42 new_response = self.run_redirect(request)43 self.assertEqual(new_response.status_code, 410)44 def test_redirect_request_temporary(self):45 # Create a redirect46 request = self.factory.get('/test/123/')47 redirect = Redirect(from_url=r'test/(?P<pk>\d+)/', to_url=r'somethingelse/(?P<pk>\d+)/',48 site=get_current_site(request), http_status=302, uses_regex=True)49 redirect.save()50 new_response = self.run_redirect(request)51 self.assertEqual(new_response.status_code, 302)52 self.assertIn(b"somethingelse", new_response.serialize_headers())53 def test_redirect_request_partial_temporary(self):54 # Create a redirect55 request = self.factory.get('/test/123/')56 redirect = Redirect(from_url='/test/', to_url='/partialtest/', is_partial=True,57 site=get_current_site(request), http_status=302)58 redirect.save()59 new_response = self.run_redirect(request)60 self.assertEqual(new_response.status_code, 302)61 self.assertIn(b"partialtest", new_response.serialize_headers())62 def test_redirect_request_partial_permanent(self):63 # Create a redirect64 request = self.factory.get('/test/123/')65 redirect = Redirect(from_url='/test/', to_url='/partialtest/', is_partial=True,66 site=get_current_site(request), http_status=301)67 redirect.save()68 new_response = self.run_redirect(request)69 self.assertEqual(new_response.status_code, 301)70 self.assertIn(b"partialtest", new_response.serialize_headers())71 def test_redirect_request_two_partial_entries_permanent(self):72 # Create a redirect73 old_route = '/invalidroot/partialtest'74 redirected_route = '/test/partialtest'75 request = self.factory.get(old_route)76 redirect = Redirect(from_url='/invalidroot', to_url=redirected_route, is_partial=True,77 site=get_current_site(request), http_status=301)78 redirect.save()79 redirect2 = Redirect(from_url=old_route, to_url=redirected_route, is_partial=True,80 site=get_current_site(request), http_status=301)81 redirect2.save()82 new_response = self.run_redirect(request)83 self.assertEqual(new_response.status_code, 301)84 self.assertEqual(new_response.url, redirected_route)85 def test_redirect_request_partial_gone(self):86 # Create a redirect87 request = self.factory.get('/test/123/')88 redirect = Redirect(from_url='/test/', to_url='', is_partial=True,89 site=get_current_site(request), http_status=301)90 redirect.save()91 new_response = self.run_redirect(request)92 self.assertEqual(new_response.status_code, 410)93 def test_redirect_request_partial_prepend_slash(self):94 # Create a redirect95 request = self.factory.get('/test/123/')96 redirect = Redirect(from_url='/test/', to_url='partialtest/', is_partial=True,97 site=get_current_site(request), http_status=302)98 redirect.save()99 new_response = self.run_redirect(request)100 self.assertEqual(new_response.status_code, 302)101 self.assertIn(b"/partialtest/123/", new_response.serialize_headers())102 def test_redirect_exclusion(self):103 # Create a redirect104 request = self.factory.get('/api/test/123/')105 settings.ROBUST_REDIRECTS_IGNORED_PREFIXES = '/api'106 redirect = Redirect(from_url='/test/', to_url='partialtest/', is_partial=True,107 site=get_current_site(request), http_status=302)108 redirect.save()109 redirect2 = Redirect(from_url=r'/api/test/(?P<pk>\d+)/', to_url=r'somethingelse/(?P<pk>\d+)/',110 site=get_current_site(request), http_status=302, uses_regex=True)111 redirect2.save()112 new_response = self.run_redirect(request)113 # no redirect should happen...
test_views.py
Source:test_views.py
...12 request = factory.get("/some_view")13 response = views.PromptDownloadView.as_view()(request)14 self.assertEqual(response.status_code, 200)15 self.assertIn(16 b"Content-Type: application/pdf", response.serialize_headers().splitlines()17 )18 self.assertIn(19 b'Content-Disposition: attachment; filename="myfile.pdf"',20 response.serialize_headers().splitlines(),21 )22 # Assert that response looks like a PDF23 self.assertTrue(response.content.startswith(b"%PDF-1."))24 def test_dont_prompt_download(self):25 request = factory.get("/some_view")26 response = views.NoPromptDownloadView.as_view()(request)27 self.assertEqual(response.status_code, 200)28 self.assertIn(29 b"Content-Type: application/pdf", response.serialize_headers().splitlines()30 )31 self.assertNotIn(b"Content-Disposition:", response.serialize_headers())32 # Assert that response looks like a PDF33 self.assertTrue(response.content.startswith(b"%PDF-1."))34class ForceHTMLTestCase(TestCase):35 def test_force_html_allowed(self):36 request = factory.get("/some_view?html=true")37 response = views.AllowForceHtmlView.as_view()(request)38 self.assertEqual(response.status_code, 200)39 self.assertEqual(b"Hi!\n", response.content)40 self.assertIn(41 b"Content-Type: text/html; charset=utf-8",42 response.serialize_headers().splitlines(),43 )44 def test_no_force_html_allowed(self):45 request = factory.get("/some_view")46 response = views.AllowForceHtmlView.as_view()(request)47 self.assertEqual(response.status_code, 200)48 self.assertIn(49 b"Content-Type: application/pdf", response.serialize_headers().splitlines()50 )51 # Assert that response looks like a PDF52 self.assertTrue(response.content.startswith(b"%PDF-1."))53 def test_force_html_disallowed(self):54 request = factory.get("/some_view?html=true")55 response = views.DisallowForceHtmlView.as_view()(request)56 self.assertEqual(response.status_code, 200)57 self.assertIn(58 b"Content-Type: application/pdf", response.serialize_headers().splitlines()59 )60 # Assert that response looks like a PDF61 self.assertTrue(response.content.startswith(b"%PDF-1."))62 def test_no_force_html_disallowed(self):63 request = factory.get("/some_view")64 response = views.DisallowForceHtmlView.as_view()(request)65 self.assertEqual(response.status_code, 200)66 self.assertIn(67 b"Content-Type: application/pdf", response.serialize_headers().splitlines()68 )69 # Assert that response looks like a PDF70 self.assertTrue(response.content.startswith(b"%PDF-1."))71class CustomUrlFetcherTestCase(TestCase):72 pass # TODO73class StaticFileResolutionTestCase(TestCase):74 def test_url_fetcher_used(self):75 request = factory.get("/some_view")76 with patch(77 "django_renderpdf.helpers.django_url_fetcher",78 return_value={79 "string": "html { margin: 0; }",80 "mime_type": "text/css",81 },...
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!