سؤال

أقوم بتطوير برنامج يجعل بعض النقاط العائمة حسابات. هل هناك أي طريقة لاختبار وظائفي (التي تقدم العوامات) مع Doctests؟

هل كانت مفيدة؟

المحلول

بالتأكيد، فقط تنسيق العوامات بتنسيق معقول، بناء على معرفتك بما هو الدقة التي تتوقعها أن تعرضها - على سبيل المثال، إذا كنت تتوقع دقة إلى رقمين بعد المرحلة العشرية، يمكنك استخدام:

''' Rest of your docstring and then...

    >>> '%.2f' % funcreturningfloat()
    '123.45'

'''

نصائح أخرى

وثائق لديه اقتراح

تخضع أرقام النقاط العائمة أيضا إلى اختلافات الإخراج الصغيرة عبر المنصات، لأن Python Devers إلى مكتبة النظام الأساسي C للتنسيق Floatting، وتختلف مكتبات C على نطاق واسع هنا.

>>> 1./7  # risky
0.14285714285714285
>>> print 1./7 # safer
0.142857142857
>>> print round(1./7, 6) # much safer
0.142857

يعمل ما يلي ل nosetests:

>>> 1/3.  # doctest: +ELLIPSIS
0.333...

يمكنك استخدام Numtest - امتداد مستذرى يبسط اختبار النتائج العددية.https://pypi.python.org/pypi/numtest.

>>> 1.0/3
0.333

مثال على ذلك: 1.0 / 3 المتوقع: 0.333 حصلت على: 0.333333333333333

>>> 1.0/3 # doctest: +NUMBER
0.333

import doctest
import numtest
doctest.testmod()

انتهت العملية مع رمز الخروج 0

مرت جميع الاختبارات. لا حاجة لتنسيق السلسلة في الاختبارات الخاصة بك.

تنسيق السلسلة يسمح باستخدام Test Tuples.

>>> funcreturningfloattuple(1.0)
(1.0, 1.0)
>>> '%.2f, %.2f' % funcreturningfloattuple(1.0)
'1.00, 1.00'

>>> funcreturningfloattuple(1.4)
(1.3999999999999999, 1.3999999999999999)
>>> '%.2f, %.2f' % funcreturningfloattuple(1.4)
'1.40, 1.40'
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top