سؤال

مرحبًا ، كنت أتساءل عما إذا كان ذلك ممكنًا وإذا كان الأمر كذلك ، فكيف؟ للقيام بالدقيق أو شيء مشابه من الخط الرئيسي ، بدلاً من اختبار وظيفة كما هو موضح في مستندات الدكتوراه أي

"""
>>> 
Hello World
"""

if __name__ == "__main__":
    print "Hello"
    import doctest
    doctest.testmod()

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

import doctest
from doctest import DocTestRunner, DocTestParser
enter code here
def run_doctest(code, test):
    import doctest
    from doctest import DocTestRunner, DocTestParser
    code = code + '\n__dtest=__parser.get_doctest(__test, globals(), "Crunchy Doctest", "crunchy", 0)\n__runner.run(__dtest)\n'
    runner = DocTestRunner()
    parser = DocTestParser()
    exec code in {'__runner':runner, '__parser':parser, '__test':test}

هذا يعمل أكثر أو أقل ولكن يبدو أنه لا يكاد مثاليًا ، اقتراحات بشأن كلتا النقطتين

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

المحلول

doctest هو ليس يقتصر على وظائف الاختبار. على سبيل المثال ، إذا dt.py هو:

'''
  >>> foo
  23
'''

foo = 23

if __name__ == '__main__':
    import doctest
    doctest.testmod()

ثم ، على سبيل المثال:

$ py26 dt.py -v
Trying:
    foo
Expecting:
    23
ok
1 items passed all tests:
   1 tests in __main__
1 tests in 1 items.
1 passed and 0 failed.
Test passed.

(يعمل أيضًا بدون ملف -v, ، ولكن بعد ذلك لن يكون لديه الكثير لإظهاره: مجرد الصمت ؛-). هل هذا ما تبحث عنه؟

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