CI
github-actions:test
5 runs
Average
61 ms
median 66 ms
max 71 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, 2 hours ago ·
open run
setup11 ms16.0%
CallInfo.from_call_pytest/runner.py:35311 ms16.0%
call_and_report.<locals>.<lambda>_pytest/runner.py:24511 ms16.0%
HookCaller.__call__pluggy/_hooks.py:51211 ms16.0%
PluginManager._hookexecpluggy/_manager.py:12011 ms16.0%
_multicallpluggy/_callers.py:12111 ms16.0%
pytest_runtest_setup_pytest/runner.py:16511 ms16.0%
SetupState.setup_pytest/runner.py:52311 ms16.0%
TestCaseFunction.setup_pytest/unittest.py:22711 ms16.0%
Function.setup_pytest/python.py:172311 ms16.0%
TopRequest._fillfixtures_pytest/fixtures.py:70711 ms16.0%
FixtureRequest.getfixturevalue_pytest/fixtures.py:53911 ms16.0%
FixtureRequest._get_active_fixturedef_pytest/fixtures.py:62711 ms16.0%
FixtureDef.execute_pytest/fixtures.py:111011 ms16.0%
HookCaller.__call__pluggy/_hooks.py:51211 ms16.0%
PluginManager._hookexecpluggy/_manager.py:12011 ms16.0%
_multicallpluggy/_callers.py:12111 ms16.0%
pytest_fixture_setup_pytest/fixtures.py:120211 ms16.0%
call_fixture_func_pytest/fixtures.py:90811 ms16.0%
UnitTestCase._register_unittest_setup_class_fixture.<locals>.unittest_setup_class_fixture_pytest/unittest.py:15411 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%
CallInfo.from_call_pytest/runner.py:35355 ms82.9%
call_and_report.<locals>.<lambda>_pytest/runner.py:24555 ms82.9%
HookCaller.__call__pluggy/_hooks.py:51255 ms82.9%
PluginManager._hookexecpluggy/_manager.py:12055 ms82.9%
_multicallpluggy/_callers.py:12155 ms82.9%
pytest_runtest_call_pytest/runner.py:17955 ms82.9%
_django_setup_unittest.<locals>.non_debugging_runtestpytest_django/plugin.py:57355 ms82.9%
SimpleTestCase.__call__django/test/testcases.py:31355 ms82.9%
SimpleTestCase._setup_and_calldjango/test/testcases.py:36852 ms79.1%
TestCase.__call__<stdlib>/unittest/case.py:74752 ms79.1%
TestCase.run<stdlib>/unittest/case.py:69152 ms79.1%
TestCase._callTestMethod<stdlib>/unittest/case.py:63752 ms79.1%
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%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 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%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 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%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 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%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 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%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 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%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 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%
SimpleTestCase._setup_and_calldjango/test/testcases.py:3712 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%
QueryTracker._django_wrapperflakytest/profiling/dbtrack.py:1002 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
shown
.
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 failuresThis test hasn't failed recently.
History
Latest 5 results, oldest first in the strip| When | Environment | Outcome | Duration | |
|---|---|---|---|---|
| 2 hours ago | CI github-actions:test | passed | 66 ms | Profile |
| 2 hours ago | CI github-actions:test | passed | 62 ms | Profile |
| 9 hours ago | CI github-actions:test | passed | 71 ms | Profile |
| 9 hours ago | CI github-actions:test | passed | 34 ms | Profile |
| 9 hours ago | CI github-actions:test | passed | 70 ms | Profile |