كيفية اختبار يطفو النتائج مع مستند؟
-
19-09-2019 - |
سؤال
أقوم بتطوير برنامج يجعل بعض النقاط العائمة حسابات. هل هناك أي طريقة لاختبار وظائفي (التي تقدم العوامات) مع 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'