تقنية

assertRaisesRegex في بايثون: هل تطابق الرسالة كاملة؟

ValueError: leaf bud seed; pattern: bud; pass.
الجزء يمر.

assertRaisesRegex تبحث عن مطابقة في str للاستثناء؛ النجاح لا يعني مطابقة الرسالة كاملة. [1] [2]

الخلاصة السريعة

لا؛ يكفي جزء مطابق في مثالنا. [1] [2]

  • assertRaisesRegex تبحث عن مطابقة في str للاستثناء؛ النجاح لا يعني مطابقة الرسالة كاملة. [1] [2]
  • على CPython 3.12.14، tc=TestCase() وmessage="leaf bud seed"؛ الاستثناء ValueError. [1] [2]
  • النمط "bud" يمر؛ str(own.exception) تعيد "leaf bud seed". [1] [2]
  • النمط "^bud$" مع الرسالة نفسها يسبب AssertionError، رغم رفع ValueError المطلوبة. [1] [2]
  • تحكم: "^bud$" يمر مع رسالة "bud". نختبر رسائل ASCII بلا أسطر جديدة، ونوع الاستثناء نفسه في الحالات الثلاث. [1] [2]

البحث في الرسالة

assertRaisesRegex تبحث عن مطابقة في str للاستثناء؛ النجاح لا يعني مطابقة الرسالة كاملة. [1] [2]

استثناء ورسالة

على CPython 3.12.14، tc=TestCase() وmessage="leaf bud seed"؛ الاستثناء ValueError. [1] [2]

جزء مطابق

النمط "bud" يمر؛ str(own.exception) تعيد "leaf bud seed". [1] [2]

from unittest import TestCase tc=TestCase() message="leaf bud seed" with tc.assertRaisesRegex(ValueError,"bud") as own: raise ValueError(message) print(str(own.exception)) [1] [2]

ValueError: leaf bud seed; pattern: ^bud$; AssertionError.
النمط المحدد يفشل هنا.

النمط المحدد والتحكم

النمط "^bud$" مع الرسالة نفسها يسبب AssertionError، رغم رفع ValueError المطلوبة. [1] [2]

try: with tc.assertRaisesRegex(ValueError,"^bud$"): raise ValueError(message) except AssertionError:print("AssertionError") with tc.assertRaisesRegex(ValueError,"^bud$"): raise ValueError("bud") print("pass") [1] [2]

تحكم: "^bud$" يمر مع رسالة "bud". نختبر رسائل ASCII بلا أسطر جديدة، ونوع الاستثناء نفسه في الحالات الثلاث. [1] [2]

المراجع

  1. Python assertRaisesRegex
  2. CPython 3.12.14 assertions

للتوسع: لغات البرمجة.

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.