flakytest.dev anze3db flakytest
Tests / ft/tests.py

UnsubscribeTest::test_signed_links

First seen 8 hours ago in 78a4357
CI github-actions:test 5 runs
Average
61 ms
median 66 ms
max 71 ms
Phases
Setup 10 ms Call 49 ms Teardown 1 ms
Categories
Database 26 ms Other (Libraries, pytest, Templates, Unsampled, ...) 35 ms

17 database queries per run

Needs 62 KB of memory (max 308 KB)

Duration per run

Where the time goes

Latest run in ci:github-actions:test, an hour ago · open run
Show pytest frames
setup11 ms16.0%
TestCase.setUpClassdjango/test/testcases.py:1423 cls.cls_atomics = cls._enter_atomics()11 ms16.0%
TestCase._enter_atomicsdjango/test/testcases.py:139611 ms16.0%
Atomic.__enter__django/db/transaction.py:19811 ms16.0%
BaseDatabaseWrapper.get_autocommitdjango/db/backends/base/base.py:45411 ms16.0%
SimpleTestCase.ensure_connection_patch_method.<locals>.patched_ensure_connectiondjango/test/testcases.py:30311 ms16.0%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:2611 ms16.0%
BaseDatabaseWrapper.ensure_connectiondjango/db/backends/base/base.py:27911 ms16.0%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:2611 ms16.0%
BaseDatabaseWrapper.connectdjango/db/backends/base/base.py:25610 ms14.6%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:2610 ms14.6%
DatabaseWrapper.get_new_connectiondjango/db/backends/postgresql/base.py:33310 ms14.6%
Connection.connectpsycopg/connection.py:1098 ms11.7%
wait_connpsycopg/waiting.py:1415 ms7.3%
EpollSelector.select<stdlib>/selectors.py:4525 ms7.3%
wait_connpsycopg/waiting.py:1453 ms4.4%
BaseConnection._connect_genpsycopg/_connection_base.py:4393 ms4.4%
Connection.connectpsycopg/connection.py:1000.96 ms1.5%
conninfo_attemptspsycopg/_conninfo_attempts.py:450.96 ms1.5%
_resolve_hostnamespsycopg/_conninfo_attempts.py:1020.96 ms1.5%
getaddrinfo<stdlib>/socket.py:9980.96 ms1.5%
Connection.connectpsycopg/connection.py:1070.96 ms1.5%
make_conninfopsycopg/conninfo.py:620.96 ms1.5%
_parse_conninfopsycopg/conninfo.py:1010.96 ms1.5%
BaseDatabaseWrapper.connectdjango/db/backends/base/base.py:2580.96 ms1.5%
DatabaseWrapper.init_connection_statedjango/db/backends/postgresql/base.py:4020.96 ms1.5%
DatabaseWrapper._configure_connectiondjango/db/backends/postgresql/base.py:3740.96 ms1.5%
DatabaseWrapper._configure_timezonedjango/db/backends/postgresql/base.py:3570.96 ms1.5%
Cursor.executepsycopg/cursor.py:1130.96 ms1.5%
Connection.waitpsycopg/connection.py:4950.96 ms1.5%
call55 ms82.9%
UnsubscribeTest.test_signed_linksft/tests.py:132 self.assertContains(self.client.get(url), "You are unsubscribed")35 ms52.8%
Client.getdjango/test/client.py:112435 ms52.8%
RequestFactory.getdjango/test/client.py:47535 ms52.8%
RequestFactory.genericdjango/test/client.py:67135 ms52.8%
Client.requestdjango/test/client.py:108235 ms52.8%
ClientHandler.__call__django/test/client.py:17330 ms45.2%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6230 ms45.2%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10430 ms45.2%
WhiteNoise.add_fileswhitenoise/base.py:10830 ms45.2%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12020 ms30.2%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13120 ms30.2%
WhiteNoise.get_static_filewhitenoise/base.py:20820 ms30.2%
StaticFile.__init__whitenoise/responders.py:777 ms11.3%
StaticFile.get_alternativeswhitenoise/responders.py:2077 ms11.3%
Headers.items<stdlib>/wsgiref/headers.py:1317 ms11.3%
<GC>~7 ms11.3%
StaticFile.__init__whitenoise/responders.py:765 ms7.5%
StaticFile.get_not_modified_responsewhitenoise/responders.py:1885 ms7.5%
Headers.__contains__<stdlib>/wsgiref/headers.py:875 ms7.5%
Headers.get<stdlib>/wsgiref/headers.py:1045 ms7.5%
StaticFile.__init__whitenoise/responders.py:735 ms7.5%
StaticFile.get_headerswhitenoise/responders.py:1802 ms3.8%
WhiteNoise.update_files_dictionarywhitenoise/base.py:11510 ms15.1%
scantreewhitenoise/base.py:2627 ms11.3%
scantreewhitenoise/base.py:2627 ms11.3%
scantreewhitenoise/base.py:2642 ms3.8%
scantreewhitenoise/base.py:2622 ms3.8%
scantreewhitenoise/base.py:2622 ms3.8%
scantreewhitenoise/base.py:2622 ms3.8%
scantreewhitenoise/base.py:2642 ms3.8%
scantreewhitenoise/base.py:2602 ms3.8%
scantreewhitenoise/base.py:2642 ms3.8%
ClientHandler.__call__django/test/client.py:1865 ms7.5%
BaseHandler.get_responsedjango/core/handlers/base.py:1415 ms7.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms7.5%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:1305 ms7.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms7.5%
MiddlewareMixin.__call__django/utils/deprecation.py:3095 ms7.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms7.5%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:1235 ms7.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms7.5%
MiddlewareMixin.__call__django/utils/deprecation.py:3095 ms7.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms7.5%
MiddlewareMixin.__call__django/utils/deprecation.py:3095 ms7.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms7.5%
MiddlewareMixin.__call__django/utils/deprecation.py:3095 ms7.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms7.5%
MiddlewareMixin.__call__django/utils/deprecation.py:3095 ms7.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms7.5%
MiddlewareMixin.__call__django/utils/deprecation.py:3095 ms7.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms7.5%
MiddlewareMixin.__call__django/utils/deprecation.py:3095 ms7.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms7.5%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:345 ms7.5%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:555 ms7.5%
BaseHandler._get_responsedjango/core/handlers/base.py:1985 ms7.5%
unsubscribeft/urls.py:1292 ms3.8%
user_from_tokenapps/onboarding/models.py:25 return User.objects.filter(pk=signing.loads(token, salt=UNSUBSCRIBE_SALT)).first()2 ms3.8%
QuerySet.firstdjango/db/models/query.py:11452 ms3.8%
QuerySet.__iter__django/db/models/query.py:3902 ms3.8%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms3.8%
ModelIterable.__iter__django/db/models/query.py:952 ms3.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
unsubscribeft/urls.py:136 return render(request, "unsubscribe.html", {"token": token})2 ms3.8%
renderdjango/shortcuts.py:252 ms3.8%
render_to_stringdjango/template/loader.py:622 ms3.8%
Template.renderdjango/template/backends/django.py:1072 ms3.8%
Template.renderdjango/template/base.py:1742 ms3.8%
instrumented_test_renderdjango/test/utils.py:1142 ms3.8%
NodeList.renderdjango/template/base.py:10912 ms3.8%
Node.render_annotateddjango/template/base.py:10522 ms3.8%
ExtendsNode.renderdjango/template/loader_tags.py:1602 ms3.8%
instrumented_test_renderdjango/test/utils.py:1142 ms3.8%
NodeList.renderdjango/template/base.py:10912 ms3.8%
Node.render_annotateddjango/template/base.py:10522 ms3.8%
ExtendsNode.renderdjango/template/loader_tags.py:1602 ms3.8%
instrumented_test_renderdjango/test/utils.py:1142 ms3.8%
NodeList.renderdjango/template/base.py:10912 ms3.8%
Node.render_annotateddjango/template/base.py:10522 ms3.8%
BlockNode.renderdjango/template/loader_tags.py:662 ms3.8%
NodeList.renderdjango/template/base.py:10912 ms3.8%
Node.render_annotateddjango/template/base.py:10522 ms3.8%
URLNode.renderdjango/template/defaulttags.py:5112 ms3.8%
reversedjango/urls/base.py:982 ms3.8%
UnsubscribeTest.test_signed_linksft/tests.py:135 self.client.post(reverse("subscribe", args=[unsubscribe_token(user)]))7 ms11.3%
Client.postdjango/test/client.py:11537 ms11.3%
RequestFactory.postdjango/test/client.py:4997 ms11.3%
RequestFactory.genericdjango/test/client.py:6495 ms7.5%
RequestFactory._get_pathdjango/test/client.py:4612 ms3.8%
Client.requestdjango/test/client.py:10822 ms3.8%
ClientHandler.__call__django/test/client.py:1862 ms3.8%
BaseHandler.get_responsedjango/core/handlers/base.py:1412 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:1302 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3092 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:1232 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3092 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3092 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3092 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3092 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3092 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3092 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:342 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
BaseHandler._get_responsedjango/core/handlers/base.py:1982 ms3.8%
subscribeft/urls.py:1402 ms3.8%
user_from_tokenapps/onboarding/models.py:25 return User.objects.filter(pk=signing.loads(token, salt=UNSUBSCRIBE_SALT)).first()2 ms3.8%
QuerySet.firstdjango/db/models/query.py:11452 ms3.8%
QuerySet.__iter__django/db/models/query.py:3902 ms3.8%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms3.8%
ModelIterable.__iter__django/db/models/query.py:952 ms3.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
RequestFactory.genericdjango/test/client.py:6712 ms3.8%
Client.requestdjango/test/client.py:10822 ms3.8%
ClientHandler.__call__django/test/client.py:1862 ms3.8%
BaseHandler.get_responsedjango/core/handlers/base.py:1412 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:1302 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3092 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:1232 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3092 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3092 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3092 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3092 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3092 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3092 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:342 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
BaseHandler._get_responsedjango/core/handlers/base.py:1982 ms3.8%
subscribeft/urls.py:145 logger.info(f"User {user.pk} subscribed")2 ms3.8%
Logger.info<stdlib>/logging/__init__.py:15232 ms3.8%
Logger._log<stdlib>/logging/__init__.py:16662 ms3.8%
Logger.makeRecord<stdlib>/logging/__init__.py:16352 ms3.8%
UnsubscribeTest.test_signed_linksft/tests.py:130 user = User.objects.create_user("ada", email="[email protected]")2 ms3.8%
UserManager.create_userdjango/contrib/auth/models.py:1752 ms3.8%
UserManager._create_userdjango/contrib/auth/models.py:1632 ms3.8%
AbstractBaseUser.savedjango/contrib/auth/base_user.py:622 ms3.8%
Model.savedjango/db/models/base.py:8742 ms3.8%
Model.save_basedjango/db/models/base.py:9662 ms3.8%
Model._save_tabledjango/db/models/base.py:11672 ms3.8%
Model._do_insertdjango/db/models/base.py:12182 ms3.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms3.8%
QuerySet._insertdjango/db/models/query.py:19182 ms3.8%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19252 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
UnsubscribeTest.test_signed_linksft/tests.py:1332 ms3.8%
Client.postdjango/test/client.py:11532 ms3.8%
RequestFactory.postdjango/test/client.py:4992 ms3.8%
RequestFactory.genericdjango/test/client.py:6712 ms3.8%
Client.requestdjango/test/client.py:10822 ms3.8%
ClientHandler.__call__django/test/client.py:1862 ms3.8%
BaseHandler.get_responsedjango/core/handlers/base.py:1412 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:1302 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3092 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:1232 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3092 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3092 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3092 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3092 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3092 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
MiddlewareMixin.__call__django/utils/deprecation.py:3092 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:342 ms3.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:552 ms3.8%
BaseHandler._get_responsedjango/core/handlers/base.py:1982 ms3.8%
unsubscribeft/urls.py:134 Unsubscribe.objects.get_or_create(user=user)2 ms3.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms3.8%
QuerySet.get_or_createdjango/db/models/query.py:9872 ms3.8%
QuerySet.getdjango/db/models/query.py:6352 ms3.8%
QuerySet.__len__django/db/models/query.py:3722 ms3.8%
QuerySet._fetch_alldjango/db/models/query.py:20002 ms3.8%
ModelIterable.__iter__django/db/models/query.py:952 ms3.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
UnsubscribeTest.test_signed_linksft/tests.py:134 self.assertTrue(Unsubscribe.objects.filter(user=user).exists())2 ms3.8%
QuerySet.existsdjango/db/models/query.py:13372 ms3.8%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms3.8%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms3.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms3.8%
UnsubscribeTest.test_signed_linksft/tests.py:138 self.assertFalse(Unsubscribe.objects.exists())2 ms3.8%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:872 ms3.8%
QuerySet.existsdjango/db/models/query.py:13372 ms3.8%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms3.8%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms3.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms3.8%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2862 ms3.8%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:782 ms3.8%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()2 ms3.8%
TestCase._fixture_teardowndjango/test/testcases.py:14952 ms3.8%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:4842 ms3.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms3.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms3.8%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms3.8%
Cursor.executepsycopg/cursor.py:1132 ms3.8%
Connection.waitpsycopg/connection.py:4952 ms3.8%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms3.8%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2862 ms3.8%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:782 ms3.8%
Estimated from 33 samples; phase durations are exact. Frames from pytest and pluggy are hidden .

Hot lines in your code

ft/tests.py:132
self.assertContains(self.client.get(url), "You are unsubscribed")
UnsubscribeTest.test_signed_links · Libraries
30 ms
apps/onboarding/models.py:25
return User.objects.filter(pk=signing.loads(token, salt=UNSUBSCRIBE_SALT)).first()
user_from_token · Database
5 ms
ft/tests.py:130
user = User.objects.create_user("ada", email="[email protected]")
UnsubscribeTest.test_signed_links · Database
2 ms
ft/urls.py:136
return render(request, "unsubscribe.html", {"token": token})
unsubscribe · Templates
2 ms
ft/urls.py:134
Unsubscribe.objects.get_or_create(user=user)
unsubscribe · Database
2 ms
ft/tests.py:134
self.assertTrue(Unsubscribe.objects.filter(user=user).exists())
UnsubscribeTest.test_signed_links · Database
2 ms
ft/tests.py:135
self.client.post(reverse("subscribe", args=[unsubscribe_token(user)]))
UnsubscribeTest.test_signed_links · Libraries
2 ms
ft/urls.py:145
logger.info(f"User {user.pk} subscribed")
subscribe · Logging
2 ms
ft/tests.py:138
self.assertFalse(Unsubscribe.objects.exists())
UnsubscribeTest.test_signed_links · Database
2 ms

Fixtures

Exact setup time
_unittest_setUpClass_fixture_UnsubscribeTest class 9 ms
_django_setup_unittest class 0.35 ms
_dj_autoclear_mailbox function 0.07 ms
_django_db_marker function 0.05 ms
_template_string_if_invalid_marker function 0.04 ms
_live_server_helper function 0.04 ms
_django_set_urlconf function 0.03 ms
_django_clear_site_cache function 0.03 ms
monkeypatch function 0.02 ms

Database

17 queries · 8 ms

Repeated queries are usually N+1 lookups: fetch them once with select_related / prefetch_related (or selectinload).

3×
SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" WHERE "a…

Biggest pieces of work

call test body
ft/tests.py:132
52 ms
setup setUpClass
django/test/testcases.py:1423
11 ms
call _post_teardown
django/test/testcases.py:1240
2 ms

Reliability

5 results · 0 CI failures · 0 local failures

This test hasn't failed recently.

History

Latest 5 results, oldest first in the strip
When Environment Outcome Duration Commit
an hour ago CI github-actions:test passed 66 ms 9caa567 main Profile
an hour ago CI github-actions:test passed 62 ms ec75501 main Profile
8 hours ago CI github-actions:test passed 71 ms d2c12e5 main Profile
8 hours ago CI github-actions:test passed 34 ms 0b902f6 main Profile
8 hours ago CI github-actions:test passed 70 ms 78a4357 main Profile