CI
github-actions:test
5 runs
Average
1.13 s
median 1.09 s
max 1.46 s
max 1.46 s
Phases
Setup 217 ms
Call 912 ms
Teardown 0.19 ms
Categories
Password hashing 1.09 s
Database 21 ms
Other (Libraries, Templates, pytest, Unsampled) 15 ms
39 database queries per run
Needs 4 KB of memory (max 20 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 22 minutes ago ·
open run
setup236 ms21.7%
CallInfo.from_call_pytest/runner.py:353236 ms21.7%
call_and_report.<locals>.<lambda>_pytest/runner.py:245235 ms21.6%
HookCaller.__call__pluggy/_hooks.py:512235 ms21.6%
PluginManager._hookexecpluggy/_manager.py:120235 ms21.6%
_multicallpluggy/_callers.py:121235 ms21.6%
pytest_runtest_setup_pytest/runner.py:165235 ms21.6%
SetupState.setup_pytest/runner.py:523235 ms21.6%
TestCaseFunction.setup_pytest/unittest.py:227235 ms21.6%
Function.setup_pytest/python.py:1723235 ms21.6%
TopRequest._fillfixtures_pytest/fixtures.py:707235 ms21.6%
FixtureRequest.getfixturevalue_pytest/fixtures.py:539235 ms21.6%
FixtureRequest._get_active_fixturedef_pytest/fixtures.py:627235 ms21.6%
FixtureDef.execute_pytest/fixtures.py:1110234 ms21.5%
HookCaller.__call__pluggy/_hooks.py:512234 ms21.5%
PluginManager._hookexecpluggy/_manager.py:120234 ms21.5%
_multicallpluggy/_callers.py:121234 ms21.5%
pytest_fixture_setup_pytest/fixtures.py:1202234 ms21.5%
call_fixture_func_pytest/fixtures.py:908234 ms21.5%
UnitTestCase._register_unittest_setup_class_fixture.<locals>.unittest_setup_class_fixture_pytest/unittest.py:154234 ms21.5%
TestCase.setUpClassdjango/test/testcases.py:1439 cls.setUpTestData()227 ms20.8%
TestAccountSettings.setUpTestDataft/tests.py:175 cls.user = User.objects.create_user("anze", email="[email protected]", password="correct horse battery")225 ms20.6%
UserManager.create_userdjango/contrib/auth/models.py:175225 ms20.6%
UserManager._create_userdjango/contrib/auth/models.py:162221 ms20.3%
UserManager._create_user_objectdjango/contrib/auth/models.py:155221 ms20.3%
make_passworddjango/contrib/auth/hashers.py:119220 ms20.2%
PBKDF2PasswordHasher.encodedjango/contrib/auth/hashers.py:335220 ms20.2%
pbkdf2django/utils/crypto.py:77220 ms20.2%
1 smaller frames hidden
1 smaller frames hidden
1 smaller frames hidden
TestCase.setUpClassdjango/test/testcases.py:1423 cls.cls_atomics = cls._enter_atomics()7 ms0.6%
TestCase._enter_atomicsdjango/test/testcases.py:13967 ms0.6%
Atomic.__enter__django/db/transaction.py:1987 ms0.6%
BaseDatabaseWrapper.get_autocommitdjango/db/backends/base/base.py:4547 ms0.6%
SimpleTestCase.ensure_connection_patch_method.<locals>.patched_ensure_connectiondjango/test/testcases.py:3037 ms0.6%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:267 ms0.6%
BaseDatabaseWrapper.ensure_connectiondjango/db/backends/base/base.py:2797 ms0.6%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:267 ms0.6%
BaseDatabaseWrapper.connectdjango/db/backends/base/base.py:2567 ms0.6%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:267 ms0.6%
DatabaseWrapper.get_new_connectiondjango/db/backends/postgresql/base.py:3337 ms0.6%
Connection.connectpsycopg/connection.py:1097 ms0.6%
1 smaller frames hidden
call853 ms78.3%
CallInfo.from_call_pytest/runner.py:353853 ms78.3%
call_and_report.<locals>.<lambda>_pytest/runner.py:245853 ms78.3%
HookCaller.__call__pluggy/_hooks.py:512853 ms78.3%
PluginManager._hookexecpluggy/_manager.py:120853 ms78.3%
_multicallpluggy/_callers.py:121853 ms78.3%
pytest_runtest_call_pytest/runner.py:179853 ms78.3%
_django_setup_unittest.<locals>.non_debugging_runtestpytest_django/plugin.py:573853 ms78.3%
SimpleTestCase.__call__django/test/testcases.py:313853 ms78.3%
SimpleTestCase._setup_and_calldjango/test/testcases.py:368851 ms78.1%
TestCase.__call__<stdlib>/unittest/case.py:747851 ms78.1%
TestCase.run<stdlib>/unittest/case.py:691836 ms76.8%
TestCase._callTestMethod<stdlib>/unittest/case.py:637836 ms76.8%
TestAccountSettings.test_change_passwordft/tests.py:203 response = self.client.post(415 ms38.1%
Client.postdjango/test/client.py:1153415 ms38.1%
RequestFactory.postdjango/test/client.py:499415 ms38.1%
RequestFactory.genericdjango/test/client.py:671415 ms38.1%
Client.requestdjango/test/client.py:1082413 ms38.0%
ClientHandler.__call__django/test/client.py:186413 ms38.0%
BaseHandler.get_responsedjango/core/handlers/base.py:141413 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55413 ms38.0%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:130413 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55413 ms38.0%
MiddlewareMixin.__call__django/utils/deprecation.py:309413 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55413 ms38.0%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:123413 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55413 ms38.0%
MiddlewareMixin.__call__django/utils/deprecation.py:309413 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55413 ms38.0%
MiddlewareMixin.__call__django/utils/deprecation.py:309413 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55413 ms38.0%
MiddlewareMixin.__call__django/utils/deprecation.py:309413 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55413 ms38.0%
MiddlewareMixin.__call__django/utils/deprecation.py:309413 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55413 ms38.0%
MiddlewareMixin.__call__django/utils/deprecation.py:309413 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55413 ms38.0%
MiddlewareMixin.__call__django/utils/deprecation.py:309413 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55413 ms38.0%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:34413 ms38.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55413 ms38.0%
BaseHandler._get_responsedjango/core/handlers/base.py:198413 ms38.0%
View.as_view.<locals>.viewdjango/views/generic/base.py:106413 ms38.0%
_multi_decorate.<locals>._wrapperdjango/utils/decorators.py:48413 ms38.0%
user_passes_test.<locals>.decorator.<locals>._view_wrapperdjango/contrib/auth/decorators.py:59410 ms37.7%
_multi_decorate.<locals>._wrapperdjango/utils/decorators.py:48410 ms37.7%
rate_limit.<locals>.decorator.<locals>.wrapallauth/decorators.py:12410 ms37.7%
_multi_decorate.<locals>._wrapperdjango/utils/decorators.py:48410 ms37.7%
sensitive_post_parameters.<locals>.decorator.<locals>.sensitive_post_parameters_wrapperdjango/views/decorators/debug.py:143410 ms37.7%
PasswordChangeView.dispatchallauth/account/views.py:503410 ms37.7%
View.dispatchdjango/views/generic/base.py:145410 ms37.7%
AjaxCapableProcessFormViewMixin.postallauth/account/mixins.py:82207 ms19.0%
PasswordChangeView.form_validallauth/account/views.py:514204 ms18.7%
ChangePasswordForm.saveallauth/account/forms.py:606204 ms18.7%
change_passwordallauth/account/internal/flows/password_change.py:12204 ms18.7%
DefaultAccountAdapter.set_passwordallauth/account/adapter.py:579204 ms18.7%
AbstractBaseUser.set_passworddjango/contrib/auth/base_user.py:94204 ms18.7%
make_passworddjango/contrib/auth/hashers.py:119204 ms18.7%
PBKDF2PasswordHasher.encodedjango/contrib/auth/hashers.py:335204 ms18.7%
pbkdf2django/utils/crypto.py:77204 ms18.7%
1 smaller frames hidden
AjaxCapableProcessFormViewMixin.postallauth/account/mixins.py:81204 ms18.7%
BaseForm.is_validdjango/forms/forms.py:206204 ms18.7%
BaseForm.errorsdjango/forms/forms.py:201204 ms18.7%
BaseForm.full_cleandjango/forms/forms.py:337204 ms18.7%
BaseForm._clean_fieldsdjango/forms/forms.py:347204 ms18.7%
ChangePasswordForm.clean_oldpasswordallauth/account/forms.py:601204 ms18.7%
AbstractBaseUser.check_passworddjango/contrib/auth/base_user.py:109204 ms18.7%
check_passworddjango/contrib/auth/hashers.py:83204 ms18.7%
verify_passworddjango/contrib/auth/hashers.py:63204 ms18.7%
PBKDF2PasswordHasher.verifydjango/contrib/auth/hashers.py:351204 ms18.7%
PBKDF2PasswordHasher.encodedjango/contrib/auth/hashers.py:335204 ms18.7%
pbkdf2django/utils/crypto.py:77204 ms18.7%
1 smaller frames hidden
1 smaller frames hidden
TestAccountSettings.test_change_passwordft/tests.py:198 response = self.client.post(205 ms18.8%
Client.postdjango/test/client.py:1153205 ms18.8%
RequestFactory.postdjango/test/client.py:499205 ms18.8%
RequestFactory.genericdjango/test/client.py:671205 ms18.8%
Client.requestdjango/test/client.py:1082205 ms18.8%
ClientHandler.__call__django/test/client.py:186205 ms18.8%
BaseHandler.get_responsedjango/core/handlers/base.py:141205 ms18.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55205 ms18.8%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:130205 ms18.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55205 ms18.8%
MiddlewareMixin.__call__django/utils/deprecation.py:309205 ms18.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55205 ms18.8%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:123205 ms18.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55205 ms18.8%
MiddlewareMixin.__call__django/utils/deprecation.py:309205 ms18.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55205 ms18.8%
MiddlewareMixin.__call__django/utils/deprecation.py:309205 ms18.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55205 ms18.8%
MiddlewareMixin.__call__django/utils/deprecation.py:309205 ms18.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55205 ms18.8%
MiddlewareMixin.__call__django/utils/deprecation.py:309205 ms18.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55205 ms18.8%
MiddlewareMixin.__call__django/utils/deprecation.py:309205 ms18.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55205 ms18.8%
MiddlewareMixin.__call__django/utils/deprecation.py:309205 ms18.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55205 ms18.8%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:34205 ms18.8%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:55205 ms18.8%
BaseHandler._get_responsedjango/core/handlers/base.py:198203 ms18.6%
View.as_view.<locals>.viewdjango/views/generic/base.py:106203 ms18.6%
_multi_decorate.<locals>._wrapperdjango/utils/decorators.py:48203 ms18.6%
user_passes_test.<locals>.decorator.<locals>._view_wrapperdjango/contrib/auth/decorators.py:59203 ms18.6%
_multi_decorate.<locals>._wrapperdjango/utils/decorators.py:48203 ms18.6%
rate_limit.<locals>.decorator.<locals>.wrapallauth/decorators.py:12203 ms18.6%
_multi_decorate.<locals>._wrapperdjango/utils/decorators.py:48203 ms18.6%
sensitive_post_parameters.<locals>.decorator.<locals>.sensitive_post_parameters_wrapperdjango/views/decorators/debug.py:143203 ms18.6%
PasswordChangeView.dispatchallauth/account/views.py:503203 ms18.6%
View.dispatchdjango/views/generic/base.py:145203 ms18.6%
AjaxCapableProcessFormViewMixin.postallauth/account/mixins.py:81203 ms18.6%
BaseForm.is_validdjango/forms/forms.py:206203 ms18.6%
BaseForm.errorsdjango/forms/forms.py:201203 ms18.6%
BaseForm.full_cleandjango/forms/forms.py:337203 ms18.6%
BaseForm._clean_fieldsdjango/forms/forms.py:347201 ms18.5%
ChangePasswordForm.clean_oldpasswordallauth/account/forms.py:601201 ms18.5%
AbstractBaseUser.check_passworddjango/contrib/auth/base_user.py:109201 ms18.5%
check_passworddjango/contrib/auth/hashers.py:83201 ms18.5%
verify_passworddjango/contrib/auth/hashers.py:63201 ms18.5%
PBKDF2PasswordHasher.verifydjango/contrib/auth/hashers.py:351201 ms18.5%
PBKDF2PasswordHasher.encodedjango/contrib/auth/hashers.py:335201 ms18.5%
pbkdf2django/utils/crypto.py:77201 ms18.5%
1 smaller frames hidden
1 smaller frames hidden
TestAccountSettings.test_change_passwordft/tests.py:213 self.assertTrue(self.user.check_password("staple battery horse"))204 ms18.7%
AbstractBaseUser.check_passworddjango/contrib/auth/base_user.py:109204 ms18.7%
check_passworddjango/contrib/auth/hashers.py:83204 ms18.7%
verify_passworddjango/contrib/auth/hashers.py:63204 ms18.7%
PBKDF2PasswordHasher.verifydjango/contrib/auth/hashers.py:351204 ms18.7%
PBKDF2PasswordHasher.encodedjango/contrib/auth/hashers.py:335204 ms18.7%
pbkdf2django/utils/crypto.py:77204 ms18.7%
TestAccountSettings.test_change_passwordft/tests.py:196 response = self.client.get(reverse("account_change_password"))14 ms1.3%
Client.getdjango/test/client.py:112414 ms1.3%
RequestFactory.getdjango/test/client.py:47514 ms1.3%
RequestFactory.genericdjango/test/client.py:67114 ms1.3%
Client.requestdjango/test/client.py:108214 ms1.3%
ClientHandler.__call__django/test/client.py:17312 ms1.1%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6212 ms1.1%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10412 ms1.1%
WhiteNoise.add_fileswhitenoise/base.py:1088 ms0.8%
1 smaller frames hidden
1 smaller frames hidden
TestCase.run<stdlib>/unittest/case.py:68715 ms1.3%
TestCase._callSetUp<stdlib>/unittest/case.py:63415 ms1.3%
TestAccountSettings.setUpft/tests.py:179 self.client.force_login(self.user)15 ms1.3%
ClientMixin.force_logindjango/test/client.py:85515 ms1.3%
ClientMixin._logindjango/test/client.py:8817 ms0.7%
2 smaller frames hidden
2 smaller frames hidden
Estimated from 1,048 samples; phase durations are exact. Frames from pytest and pluggy are
shown
.
Hot lines in your code
|
ft/tests.py:203
response = self.client.post(
TestAccountSettings.test_change_password
· Password hashing
|
415 ms |
|
ft/tests.py:175
cls.user = User.objects.create_user("anze", email="[email protected]", password="correct horse battery")
TestAccountSettings.setUpTestData
· Password hashing
|
225 ms |
|
ft/tests.py:198
response = self.client.post(
TestAccountSettings.test_change_password
· Password hashing
|
205 ms |
|
ft/tests.py:213
self.assertTrue(self.user.check_password("staple battery horse"))
TestAccountSettings.test_change_password
· Password hashing
|
204 ms |
|
ft/tests.py:179
self.client.force_login(self.user)
TestAccountSettings.setUp
· Database
|
15 ms |
|
ft/tests.py:196
response = self.client.get(reverse("account_change_password"))
TestAccountSettings.test_change_password
· Libraries
|
14 ms |
|
ft/tests.py:176
EmailAddress.objects.create(user=cls.user, email="[email protected]", primary=True, verified=True)
TestAccountSettings.setUpTestData
· Database
|
2 ms |
Fixtures
Exact setup time| _unittest_setUpClass_fixture_TestAccountSettings class | 234 ms |
| _django_setup_unittest class | 0.33 ms |
| _template_string_if_invalid_marker function | 0.09 ms |
| _django_db_marker function | 0.08 ms |
| _live_server_helper function | 0.07 ms |
| _dj_autoclear_mailbox function | 0.07 ms |
| _django_set_urlconf function | 0.06 ms |
| _django_clear_site_cache function | 0.04 ms |
| monkeypatch function | 0.03 ms |
Database
39 queries · 20 ms
Repeated queries are usually N+1 lookups: fetch them once with select_related / prefetch_related (or selectinload).
4×
SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."expire_date" > %s AND "django_session"."session_key" = %s) LIMIT ?
4×
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…
3×
SELECT %s AS "a" FROM "django_session" WHERE "django_session"."session_key" = %s LIMIT ?
3×
INSERT INTO "django_session" ("session_key", "session_data", "expire_date") VALUES (%s, %s, %s)
Biggest pieces of work
|
call test body
ft/tests.py:203
|
836 ms |
|
setup setUpClass
django/test/testcases.py:1439
|
234 ms |
|
call setUp
ft/tests.py:179
|
15 ms |
| setup pytest internals | 2 ms |
|
call _pre_setup
django/test/testcases.py:1164
|
1 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 | |
|---|---|---|---|---|
| 22 minutes ago | CI github-actions:test | passed | 1.09 s | Profile |
| 47 minutes ago | CI github-actions:test | passed | 1.06 s | Profile |
| 7 hours ago | CI github-actions:test | passed | 1.32 s | Profile |
| 7 hours ago | CI github-actions:test | passed | 721 ms | Profile |
| 7 hours ago | CI github-actions:test | passed | 1.46 s | Profile |