Python ایک معیاری doctest ماڈیول کے ساتھ آتا ہے جو docstring کے مواد کی جانچ کرتا ہے، docstring میں ان پٹ اور آؤٹ پٹ مثالیں لکھنا آسان بناتا ہے اور دستاویزات کو سمجھنا آسان بناتا ہے۔
درج ذیل معلومات یہاں فراہم کی گئی ہیں۔
- doctest کے ساتھ جانچ کی ایک سادہ مثال
- اگر کوئی غلطی نہ ہو۔
- اگر کوئی خامی ہے۔
- اختیارات اور دلائل کے ذریعہ آؤٹ پٹ کے نتائج کو کنٹرول کریں۔
-vآپشنverboseدلیل (جیسے فنکشن، پروگرام، پروگرام)
- کمانڈ لائن سے doctest ماڈیول چلائیں۔
- ایک بیرونی ٹیکسٹ فائل میں ٹیسٹ لکھنا
- ٹیکسٹ فائل کیسے لکھیں۔
- py فائل سے کال کی گئی۔
- ٹیکسٹ فائل کو براہ راست چلائیں۔
doctest کے ساتھ جانچ کی ایک سادہ مثال
ایک ڈاکسٹرنگ ایک سٹرنگ ہے جو درج ذیل میں سے کسی ایک میں بند ہے: (1) ٹیسٹ کیے جانے والے فنکشن کا نام، (2) ٹیسٹ کیے جانے والے فنکشن کا نام، اور (3) Python انٹرایکٹو موڈ میں متوقع آؤٹ پٹ ویلیو۔
"""''
اگر کوئی غلطی نہ ہو۔
اس بات کو یقینی بنائیں کہ کوڈ فنکشن اور docstring کے مواد میں درست ہے۔
def add(a, b):
'''
>>> add(1, 2)
3
>>> add(5, 10)
15
'''
return a + b
if __name__ == '__main__':
import doctest
doctest.testmod()
اس فائل کو چلائیں۔
$ python3 doctest_example.py
اگر کوئی غلطیاں نہیں ہیں تو، کچھ بھی نہیں ہو گا.
if __name__ == '__main__'اس کا مطلب ہے کہ "بعد کی پروسیسنگ کو صرف اس وقت انجام دیں جب متعلقہ اسکرپٹ فائل کو کمانڈ لائن سے عمل میں لایا جائے۔
اگر کوئی خامی ہے۔
اگر آپ مندرجہ ذیل غلط کوڈ کو بناتے اور اس پر عمل کرتے ہیں، تو ایک ایرر آؤٹ پٹ ہوگا۔
def add(a, b):
'''
>>> add(1, 2)
3
>>> add(5, 10)
10
'''
return a * b
if __name__ == '__main__':
import doctest
doctest.testmod()
$ python3 doctest_example_error.py
**********************************************************************
File "doctest_example_error.py", line 3, in __main__.add
Failed example:
add(1, 2)
Expected:
3
Got:
2
**********************************************************************
File "doctest_example_error.py", line 5, in __main__.add
Failed example:
add(5, 10)
Expected:
10
Got:
50
**********************************************************************
1 items had failures:
2 of 2 in __main__.add
***Test Failed*** 2 failures.
یہ مندرجہ ذیل کے طور پر دکھایا گیا ہے.
| متوقع آؤٹ پٹ قدریں doctest میں لکھی گئی ہیں۔ | Expected |
| اصل آؤٹ پٹ ویلیو | Got |
اختیارات اور دلائل کے ذریعہ آؤٹ پٹ کے نتائج کو کنٹرول کریں۔
-vآپشن
اگر آپ چاہتے ہیں کہ کوئی خرابی نہ ہونے کے باوجود آؤٹ پٹ کے نتائج ظاہر ہوں تو کمانڈ لائن پر -v آپشن کے ساتھ کمانڈ چلائیں۔
$ python3 doctest_example.py -v
Trying:
add(1, 2)
Expecting:
3
ok
Trying:
add(5, 10)
Expecting:
15
ok
1 items had no tests:
__main__
1 items passed all tests:
2 tests in __main__.add
2 tests in 2 items.
2 passed and 0 failed.
Test passed.
verboseدلیل (جیسے فنکشن، پروگرام، پروگرام)
اگر آپ ہمیشہ آؤٹ پٹ کے نتائج کو ظاہر کرنا چاہتے ہیں تو py فائل میں verbose=True in doctest.testmod() کی دلیل کی وضاحت کریں۔
if __name__ == '__main__':
import doctest
doctest.testmod(verbose=True)
آؤٹ پٹ کے نتائج ہمیشہ رن ٹائم پر -v آپشن کے بغیر دکھائے جائیں گے۔
$ python3 doctest_example_verbose.py
Trying:
add(1, 2)
Expecting:
3
ok
Trying:
add(5, 10)
Expecting:
15
ok
1 items had no tests:
__main__
1 items passed all tests:
2 tests in __main__.add
2 tests in 2 items.
2 passed and 0 failed.
Test passed.
کمانڈ لائن سے doctest ماڈیول چلائیں۔
if __name__ == '__main__'اگر آپ اس میں کچھ اور کرنا چاہتے ہیں، تو آپ py فائل میں doctest.testmod() کو کال کیے بغیر کمانڈ لائن سے براہ راست doctest ماڈیول چلا سکتے ہیں۔
مثال کے طور پر درج ذیل صورتوں میں
def add(a, b):
'''
>>> add(1, 2)
3
>>> add(5, 10)
15
'''
return a + b
if __name__ == '__main__':
import sys
result = add(int(sys.argv[1]), int(sys.argv[2]))
print(result)
یہ کمانڈ لائن دلائل حاصل کرسکتا ہے اور عمل کو معمول کے مطابق انجام دے سکتا ہے۔
$ python3 doctest_example_without_import.py 3 4
7
اگر آپ doctest کو اسکرپٹ کے طور پر -m آپشن کے ساتھ چلاتے ہیں، تو ٹیسٹ اس فنکشن کے خلاف چلایا جائے گا جس میں doctest لکھا گیا ہے۔ اگر آپ آؤٹ پٹ کے نتائج دکھانا چاہتے ہیں تو پہلے کی طرح -v شامل کریں۔
$ python3 -m doctest doctest_example_without_import.py
$ python3 -m doctest -v doctest_example_without_import.py
Trying:
add(1, 2)
Expecting:
3
ok
Trying:
add(5, 10)
Expecting:
15
ok
1 items had no tests:
doctest_example_without_import
1 items passed all tests:
2 tests in doctest_example_without_import.add
2 tests in 2 items.
2 passed and 0 failed.
Test passed.
ایک بیرونی ٹیکسٹ فائل میں ٹیسٹ لکھنا
آپ ٹیسٹ کوڈ کو docstring کے بجائے بیرونی ٹیکسٹ فائل میں بھی لکھ سکتے ہیں۔
ٹیکسٹ فائل کیسے لکھیں۔
Python انٹرایکٹو موڈ فارمیٹ میں لکھیں، جیسا کہ docstring میں بیان کیا گیا ہے۔ استعمال کیے جانے والے افعال کو درآمد کرنا ضروری ہے۔
اگر آپ ٹیکسٹ فائل کو اسی ڈائرکٹری میں رکھنا چاہتے ہیں جس میں .py فائل کی جانچ کی جانی ہے، تو اسے درج ذیل طریقے سے درآمد کریں۔
>>> from doctest_example import add
>>> add(1, 2)
3
>>> add(5, 10)
15
py فائل سے کال کی گئی۔
جانچ کے لیے دوسری .py فائل میں doctest.testfile() کو کال کریں۔
ٹیکسٹ فائل کے راستے کی وضاحت کریں جہاں ٹیسٹ کوڈ doctest.testfile() کی دلیل کے طور پر لکھا گیا ہے۔
import doctest
doctest.testfile('doctest_text.txt')
اس py فائل کو چلائیں۔
$ python3 doctest_example_testfile.py -v
Trying:
from doctest_example import add
Expecting nothing
ok
Trying:
add(1, 2)
Expecting:
3
ok
Trying:
add(5, 10)
Expecting:
15
ok
1 items passed all tests:
3 tests in doctest_text.txt
3 tests in 1 items.
3 passed and 0 failed.
Test passed.
ٹیکسٹ فائل کو براہ راست چلائیں۔
یہاں تک کہ اگر آپ کے پاس py فائل نہیں ہے، آپ ٹیکسٹ فائل کو براہ راست کمانڈ لائن سے پڑھ سکتے ہیں اور ٹیسٹ چلا سکتے ہیں۔
doctest کو اسکرپٹ کے طور پر چلانے کے لیے Python کمانڈ کو -m آپشن کے ساتھ چلائیں۔ آپ کمانڈ لائن دلیل کے طور پر ٹیکسٹ فائل پاتھ کی وضاحت کر سکتے ہیں۔
$ python3 -m doctest -v doctest_text.txt
Trying:
from doctest_example import add
Expecting nothing
ok
Trying:
add(1, 2)
Expecting:
3
ok
Trying:
add(5, 10)
Expecting:
15
ok
1 items passed all tests:
3 tests in doctest_text.txt
3 tests in 1 items.
3 passed and 0 failed.
Test passed.


