تقنية

maxDiff في unittest: هل يغيّر نتيجة المقارنة؟

حد صفر؛ maxDiff:0; input:[4]/[7]; AssertionError; diff:omitted; base:present
حد.

الحد يغيّر عرض الفرق هنا. [1] [2]

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

لا؛ كلا التأكيدين يفشل هنا. [1] [2]

  • على CPython 3.12.14، نقارن [4] و[7] مباشرةً بواسطة TestCase. [1] [2]
  • maxDiff=0: AssertionError، مع حذف مقطع الفرق. [1] [2]
  • maxDiff يحد الفرق المعروض؛ None يلغي الحد. [1] [2]
  • تبقى رسالة الاختلاف الأساسية؛ 0 لا يخفي الرسالة كلها هنا. [1] [2]
  • تحكم مستقل بـmaxDiff=None: AssertionError أيضًا، ويظهر - [4] و+ [7]. [1] [2]

مقارنة محددة

على CPython 3.12.14، نقارن [4] و[7] مباشرةً بواسطة TestCase. [1] [2]

حد صفر

maxDiff=0: AssertionError، مع حذف مقطع الفرق. [1] [2]

مقطع الفرق

maxDiff يحد الفرق المعروض؛ None يلغي الحد. [1] [2]

from unittest import TestCase first=[4];second=[7] own=TestCase();own.maxDiff=0 try: own.assertSequenceEqual(first,second) except AssertionError as ex: print(type(ex).__name__,"- [4]" in str(ex),"+ [7]" in str(ex)) [1] [2]

بلا حد؛ maxDiff:None; input:[4]/[7]; AssertionError; diff:included; base:present
فرق.

الرسالة والتحكم

تبقى رسالة الاختلاف الأساسية؛ 0 لا يخفي الرسالة كلها هنا. [1] [2]

control=TestCase();control.maxDiff=None try: control.assertSequenceEqual(first,second) except AssertionError as ex: print(type(ex).__name__,"- [4]" in str(ex),"+ [7]" in str(ex)) [1] [2]

تحكم مستقل بـmaxDiff=None: AssertionError أيضًا، ويظهر - [4] و+ [7]. [1] [2]

المراجع

  1. Python unittest
  2. CPython case

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

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