سؤال

واجهت مؤخرا مشكلة في الجمع بين اختبارات الوحدة والمستندات في بيثون. عملت في هذه المشكلة بطريقة أخرى، لكن لا يزال لدي سؤال حول هذا الموضوع.

يوزع وحدة Doctest في Python DocStrings في وحدة نمطية وتشغيل أوامر متابعة ">>>" في بداية كل سطر ومقارنة إخراجها وتلك الموجودة في DocStrings.

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

إنه شيء مثل هذا:

class MyTest(TestCase):
    def testIt(self):
        # some codes like self.assertEqual(...)
        output = StringIO()
        with StdoutCollector(output):
            # do something that uses stdout
        # I want something like this:
        doctest.compare_result(output.getvalue(), 'expected output')
        # do more things

لأن Doctest يستخدم بعض الاستدلال لمقارنة مخرجات مثل القطع القطع.

هل سيعطي شخص ما فكرة أو اقتراحات؟

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

المحلول

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top