feat(collect): show skipped reason summaries
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
import unittest
|
||||
|
||||
from app.collect_skip import (
|
||||
ALIAS_UNMATCHED,
|
||||
LOGIN_REQUIRED,
|
||||
OTHER,
|
||||
classify_skip_reason,
|
||||
format_skip_reason_summary,
|
||||
normalize_skip_reason_counts,
|
||||
skipped_stage_text,
|
||||
)
|
||||
|
||||
|
||||
class CollectSkipReasonTests(unittest.TestCase):
|
||||
def test_classifies_supported_and_unknown_historical_reasons(self):
|
||||
self.assertEqual(ALIAS_UNMATCHED, classify_skip_reason("别名未匹配账号"))
|
||||
self.assertEqual(LOGIN_REQUIRED, classify_skip_reason("采集中途掉登录:LOGIN_PAGE"))
|
||||
self.assertEqual(OTHER, classify_skip_reason("NO_SESSION_COOKIE"))
|
||||
self.assertEqual(OTHER, classify_skip_reason(""))
|
||||
|
||||
def test_unmatched_alias_has_priority_over_reason_text(self):
|
||||
self.assertEqual(
|
||||
ALIAS_UNMATCHED,
|
||||
classify_skip_reason("账号未登录", alias_matched=False),
|
||||
)
|
||||
self.assertEqual(
|
||||
"略过 · 别名未匹配",
|
||||
skipped_stage_text("", alias_matched=False),
|
||||
)
|
||||
|
||||
def test_summary_fills_unclassified_count_as_other(self):
|
||||
counts = normalize_skip_reason_counts(
|
||||
{ALIAS_UNMATCHED: 2, LOGIN_REQUIRED: 1},
|
||||
skipped_total=4,
|
||||
)
|
||||
self.assertEqual(1, counts[OTHER])
|
||||
self.assertEqual(
|
||||
"略过4:别名未匹配2,账号未登录1,其他原因1",
|
||||
format_skip_reason_summary(counts, skipped_total=4),
|
||||
)
|
||||
|
||||
def test_zero_skips_has_no_empty_summary(self):
|
||||
self.assertEqual("", format_skip_reason_summary({}, skipped_total=0))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user