Tests / announcements/tests.py
TestPostAnnouncements::test_does_not_repost_already_posted
First seen 12 hours ago in 0c23747
CI
github-actions:test
4 runs
Average
73 ms
median 78 ms
max 101 ms
max 101 ms
Phases
Setup 25 ms
Call 48 ms
Teardown 0.30 ms
Categories
Database 38 ms
Test code 1 ms
Other (Libraries, Imports, pytest, Mocking, ...) 34 ms
10 database queries per run
Needs 578 KB of memory (max 588 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 7 hours ago ·
open run
setup13 ms36.8%
TestCase.setUpClassdjango/test/testcases.py:1426 cls.cls_atomics = cls._enter_atomics()7 ms19.6%
TestCase._enter_atomicsdjango/test/testcases.py:13997 ms19.6%
Atomic.__enter__django/db/transaction.py:2107 ms19.6%
BaseDatabaseWrapper.get_autocommitdjango/db/backends/base/base.py:4547 ms19.6%
SimpleTestCase.ensure_connection_patch_method.<locals>.patched_ensure_connectiondjango/test/testcases.py:3047 ms19.6%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:267 ms19.6%
BaseDatabaseWrapper.ensure_connectiondjango/db/backends/base/base.py:2797 ms19.6%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:267 ms19.6%
BaseDatabaseWrapper.connectdjango/db/backends/base/base.py:2567 ms19.6%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:267 ms19.6%
DatabaseWrapper.get_new_connectiondjango/db/backends/postgresql/base.py:3457 ms19.6%
Connection.connectpsycopg/connection.py:1096 ms17.2%
wait_connpsycopg/waiting.py:1454 ms12.3%
BaseConnection._connect_genpsycopg/_connection_base.py:4394 ms12.3%
wait_connpsycopg/waiting.py:1412 ms4.9%
EpollSelector.select<stdlib>/selectors.py:4522 ms4.9%
Connection.connectpsycopg/connection.py:970.88 ms2.5%
Connection._get_connection_paramspsycopg/connection.py:1850.88 ms2.5%
conninfo_to_dictpsycopg/conninfo.py:820.88 ms2.5%
_parse_conninfopsycopg/conninfo.py:1010.88 ms2.5%
<lambda><string>:10.88 ms2.5%
TestCase.setUpClassdjango/test/testcases.py:1420 super().setUpClass()4 ms12.3%
TransactionTestCase.setUpClassdjango/test/testcases.py:11334 ms12.3%
SimpleTestCase.setUpClassdjango/test/testcases.py:2174 ms12.3%
TestContextDecorator.__enter__django/test/utils.py:4334 ms12.3%
override_settings.enabledjango/test/utils.py:5134 ms12.3%
Signal.senddjango/dispatch/dispatcher.py:2494 ms12.3%
root_urlconf_changeddjango/test/signals.py:1764 ms12.3%
SysMonitor.sysmon_py_startcoverage/sysmon.py:365 code_info = CodeInfo(4 ms12.3%
isgeneratorfunction<stdlib>/inspect.py:308 return _has_code_flag(obj, CO_GENERATOR)0.88 ms2.5%
_has_code_flag<stdlib>/inspect.py:3010.88 ms2.5%
call22 ms62.4%
TestPostAnnouncements.test_does_not_repost_already_postedannouncements/tests.py:7614 ms40.1%
TestPostAnnouncements._run_atannouncements/tests.py:42 call_command("postannouncements", *([] if dry_run else ["--no-dry-run"]))10 ms26.7%
call_commanddjango/core/management/__init__.py:19510 ms26.7%
RichCommand.executedjango_rich/management/__init__.py:3410 ms26.7%
BaseCommand.executedjango/core/management/base.py:46610 ms26.7%
Command.handleannouncements/management/commands/postannouncements.py:65 self.console.print(f"Posted {announcement} → {announcement.post_url}")8 ms22.3%
Console.printrich/console.py:17055 ms13.4%
Console._collect_renderablesrich/console.py:15603 ms8.9%
Console.render_strrich/console.py:14423 ms8.9%
renderrich/markup.py:1303 ms8.9%
_emoji_replacerich/_emoji_replace.py:153 ms8.9%
_find_and_load<frozen importlib._bootstrap>:13503 ms8.9%
_find_and_load_unlocked<frozen importlib._bootstrap>:13093 ms8.9%
_load_unlocked<frozen importlib._bootstrap>:9153 ms8.9%
_LoaderBasics.exec_module<frozen importlib._bootstrap_external>:7433 ms8.9%
SourceLoader.get_code<frozen importlib._bootstrap_external>:8723 ms8.9%
_compile_bytecode<frozen importlib._bootstrap_external>:5003 ms8.9%
Console._collect_renderablesrich/console.py:15572 ms4.5%
rich_castrich/protocol.py:182 ms4.5%
SysMonitor.sysmon_py_startcoverage/sysmon.py:345 disp = self.should_trace(filename, frame) # type: ignore[arg-type]2 ms4.5%
Coverage._should_tracecoverage/control.py:4522 ms4.5%
InOrOut.should_tracecoverage/inorout.py:4012 ms4.5%
canonical_filenamecoverage/files.py:852 ms4.5%
abs_filecoverage/files.py:1582 ms4.5%
realpath<frozen posixpath>:4602 ms4.5%
Console.printrich/console.py:17313 ms8.9%
Console.renderrich/console.py:13393 ms8.9%
Text.__rich_console__rich/text.py:6963 ms8.9%
Text.wraprich/text.py:12393 ms8.9%
divide_linerich/_wrap.py:442 ms4.5%
wordsrich/_wrap.py:202 ms4.5%
divide_linerich/_wrap.py:452 ms4.5%
cell_lenrich/cells.py:1092 ms4.5%
cached_cell_lenrich/cells.py:952 ms4.5%
_cell_lenrich/cells.py:1312 ms4.5%
_cell_len.<locals>.<genexpr>rich/cells.py:1322 ms4.5%
get_character_cell_sizerich/cells.py:602 ms4.5%
loadrich/_unicode_data/__init__.py:902 ms4.5%
import_module<stdlib>/importlib/__init__.py:882 ms4.5%
_gcd_import<frozen importlib._bootstrap>:13902 ms4.5%
_find_and_load<frozen importlib._bootstrap>:13502 ms4.5%
_find_and_load_unlocked<frozen importlib._bootstrap>:13092 ms4.5%
_load_unlocked<frozen importlib._bootstrap>:9152 ms4.5%
_LoaderBasics.exec_module<frozen importlib._bootstrap_external>:7432 ms4.5%
SourceLoader.get_code<frozen importlib._bootstrap_external>:8722 ms4.5%
_compile_bytecode<frozen importlib._bootstrap_external>:5002 ms4.5%
Command.handleannouncements/management/commands/postannouncements.py:64 announcement.save(update_fields=["posted_at", "post_url", "error"])2 ms4.5%
Model.savedjango/db/models/base.py:8772 ms4.5%
TestPostAnnouncements._run_atannouncements/tests.py:34 mock.patch("announcements.management.commands.postannouncements.timezone.now", return_value=moment),3 ms8.9%
_patch.__enter__<stdlib>/unittest/mock.py:14943 ms8.9%
resolve_name<stdlib>/pkgutil.py:4813 ms8.9%
import_module<stdlib>/importlib/__init__.py:883 ms8.9%
_gcd_import<frozen importlib._bootstrap>:13903 ms8.9%
_find_and_load<frozen importlib._bootstrap>:13503 ms8.9%
_find_and_load_unlocked<frozen importlib._bootstrap>:12982 ms4.5%
_find_spec<frozen importlib._bootstrap>:12222 ms4.5%
PathFinder.find_spec<frozen importlib._bootstrap_external>:12702 ms4.5%
PathFinder._get_spec<frozen importlib._bootstrap_external>:12442 ms4.5%
FileFinder.find_spec<frozen importlib._bootstrap_external>:13792 ms4.5%
_path_isfile<frozen importlib._bootstrap_external>:1662 ms4.5%
_path_is_mode_type<frozen importlib._bootstrap_external>:1582 ms4.5%
_path_stat<frozen importlib._bootstrap_external>:1522 ms4.5%
_find_and_load_unlocked<frozen importlib._bootstrap>:13092 ms4.5%
_load_unlocked<frozen importlib._bootstrap>:9152 ms4.5%
_LoaderBasics.exec_module<frozen importlib._bootstrap_external>:7432 ms4.5%
SourceLoader.get_code<frozen importlib._bootstrap_external>:8772 ms4.5%
SourceLoader.source_to_code<frozen importlib._bootstrap_external>:8062 ms4.5%
_call_with_frames_removed<frozen importlib._bootstrap>:5492 ms4.5%
TestPostAnnouncements._run_atannouncements/tests.py:37 client = mastodon_cls.return_value2 ms4.5%
NonCallableMock.__get_return_value<stdlib>/unittest/mock.py:5842 ms4.5%
NonCallableMock._get_child_mock<stdlib>/unittest/mock.py:10972 ms4.5%
MagicMixin.__init__<stdlib>/unittest/mock.py:21822 ms4.5%
MagicMixin._mock_set_magics<stdlib>/unittest/mock.py:22052 ms4.5%
TestPostAnnouncements.test_does_not_repost_already_postedannouncements/tests.py:73 self.due.save()3 ms8.9%
Model.savedjango/db/models/base.py:9043 ms8.9%
Model.save_basedjango/db/models/base.py:9963 ms8.9%
Model._save_tabledjango/db/models/base.py:11403 ms8.9%
Model._do_updatedjango/db/models/base.py:12443 ms8.9%
QuerySet._updatedjango/db/models/query.py:14483 ms8.9%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21503 ms8.9%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21213 ms8.9%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16253 ms8.9%
CursorWrapper.executedjango/db/backends/utils.py:793 ms8.9%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:923 ms8.9%
CursorWrapper._executedjango/db/backends/utils.py:1053 ms8.9%
Cursor.executepsycopg/cursor.py:1133 ms8.9%
Connection.waitpsycopg/connection.py:4953 ms8.9%
BaseCursor._execute_genpsycopg/_cursor_base.py:2063 ms8.9%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2863 ms8.9%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:783 ms8.9%
TestPostAnnouncements.setUpannouncements/tests.py:18 self.due = baker.make(3 ms8.9%
makemodel_bakery/baker.py:1753 ms8.9%
Baker.makemodel_bakery/baker.py:4543 ms8.9%
Baker._makemodel_bakery/baker.py:5423 ms8.9%
Baker.instancemodel_bakery/baker.py:6593 ms8.9%
Model.savedjango/db/models/base.py:9043 ms8.9%
Model.save_basedjango/db/models/base.py:9963 ms8.9%
Model._save_tabledjango/db/models/base.py:11993 ms8.9%
Model._do_insertdjango/db/models/base.py:12513 ms8.9%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:873 ms8.9%
QuerySet._insertdjango/db/models/query.py:21413 ms8.9%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19363 ms8.9%
CursorWrapper.executedjango/db/backends/utils.py:793 ms8.9%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:923 ms8.9%
CursorWrapper._executedjango/db/backends/utils.py:1053 ms8.9%
Cursor.executepsycopg/cursor.py:1133 ms8.9%
Connection.waitpsycopg/connection.py:4953 ms8.9%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms4.5%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2862 ms4.5%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:782 ms4.5%
TransactionTestCase._post_teardowndjango/test/testcases.py:1243 self._fixture_teardown()2 ms4.5%
TestCase._fixture_teardowndjango/test/testcases.py:14982 ms4.5%
DatabaseWrapper.check_constraintsdjango/db/backends/postgresql/base.py:4962 ms4.5%
CursorWrapper.executedjango/db/backends/utils.py:792 ms4.5%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms4.5%
CursorWrapper._executedjango/db/backends/utils.py:1032 ms4.5%
Estimated from 29 samples; phase durations are exact. Frames from pytest and pluggy are
hidden
.
Hot lines in your code
|
announcements/management/commands/postannouncements.py:65
self.console.print(f"Posted {announcement} → {announcement.post_url}")
Command.handle
· Imports
|
8 ms |
|
announcements/tests.py:73
self.due.save()
TestPostAnnouncements.test_does_not_repost_already_posted
· Database
|
3 ms |
|
announcements/tests.py:18
self.due = baker.make(
TestPostAnnouncements.setUp
· Database
|
3 ms |
|
announcements/tests.py:34
mock.patch("announcements.management.commands.postannouncements.timezone.now", return_value=moment),
TestPostAnnouncements._run_at
· Imports
|
3 ms |
|
announcements/tests.py:37
client = mastodon_cls.return_value
TestPostAnnouncements._run_at
· Mocking
|
2 ms |
|
announcements/management/commands/postannouncements.py:64
announcement.save(update_fields=["posted_at", "post_url", "error"])
Command.handle
· Database
|
2 ms |
Fixtures
Exact setup time| _unittest_setUpClass_fixture_TestPostAnnouncements class | 11 ms |
| _django_setup_unittest class | 0.29 ms |
| _template_string_if_invalid_marker function | 0.16 ms |
| _dj_autoclear_mailbox function | 0.05 ms |
| _django_db_marker function | 0.05 ms |
| _live_server_helper function | 0.03 ms |
| _django_isolate_apps function | 0.03 ms |
| _django_clear_site_cache function | 0.03 ms |
| _django_set_urlconf function | 0.03 ms |
| monkeypatch function | 0.02 ms |
Database
10 queries · 6 msNo repeated queries.
Biggest pieces of work
|
call test body
announcements/tests.py:73
|
18 ms |
|
setup setUpClass
django/test/testcases.py:1420
|
11 ms |
|
call setUp
announcements/tests.py:18
|
3 ms |
|
call _post_teardown
django/test/testcases.py:1243
|
2 ms |
| setup pytest internals | 0.88 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 | |
|---|---|---|---|---|
| 7 hours ago | CI github-actions:test | passed | 36 ms | Profile |
| 7 hours ago | CI github-actions:test | passed | 73 ms | Profile |
| 7 hours ago | CI github-actions:test | passed | 101 ms | Profile |
| 12 hours ago | CI github-actions:test | passed | 83 ms | Profile |
| 12 hours ago | CI github-actions:test | passed | 30 ms | Run |