Python باستخدام Doctest على الخط الرئيسي
سؤال
مرحبًا ، كنت أتساءل عما إذا كان ذلك ممكنًا وإذا كان الأمر كذلك ، فكيف؟ للقيام بالدقيق أو شيء مشابه من الخط الرئيسي ، بدلاً من اختبار وظيفة كما هو موضح في مستندات الدكتوراه أي
"""
>>>
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
, ، ولكن بعد ذلك لن يكون لديه الكثير لإظهاره: مجرد الصمت ؛-). هل هذا ما تبحث عنه؟
لا تنتمي إلى StackOverflow