পাইথনে ডকস্ট্রিংয়ে টেস্ট কোড লিখতে ডক্টেস্ট কীভাবে লিখবেন এবং ব্যবহার করবেন।

ব্যবসায়

পাইথন একটি স্ট্যান্ডার্ড ডকটেস্ট মডিউল নিয়ে আসে যা একটি ডকস্ট্রিং-এর বিষয়বস্তু পরীক্ষা করে, এটি ডকস্ট্রিং-এ ইনপুট এবং আউটপুট উদাহরণ লেখা সহজ করে এবং ডকুমেন্টেশন বোঝা সহজ করে তোলে।

নিম্নলিখিত তথ্য এখানে প্রদান করা হয়.

  • ডক্টেস্ট দিয়ে পরীক্ষার একটি সহজ উদাহরণ
    • যদি কোন ত্রুটি না থাকে
    • যদি কোন ত্রুটি থাকে
  • বিকল্প এবং আর্গুমেন্ট দ্বারা আউটপুট ফলাফল নিয়ন্ত্রণ
    • -vঅপশন
    • verboseযুক্তি (যেমন ফাংশন, প্রোগ্রাম, প্রোগ্রাম)
  • কমান্ড লাইন থেকে ডক্টেস্ট মডিউল চালান
  • একটি বহিরাগত পাঠ্য ফাইলে পরীক্ষা লেখা
    • কিভাবে একটি টেক্সট ফাইল লিখতে হয়
    • py ফাইল থেকে কল করা হয়েছে
    • সরাসরি একটি টেক্সট ফাইল চালান

ডক্টেস্ট দিয়ে পরীক্ষার একটি সহজ উদাহরণ

একটি ডকস্ট্রিং হল নিম্নলিখিতগুলির একটিতে আবদ্ধ একটি স্ট্রিং: (1) পরীক্ষা করার জন্য ফাংশনের নাম, (2) পরীক্ষা করার জন্য ফাংশনের নাম এবং (3) পাইথন ইন্টারেক্টিভ মোডে প্রত্যাশিত আউটপুট মান৷

  • """
  • ''

যদি কোন ত্রুটি না থাকে

ফাংশন এবং ডকস্ট্রিং বিষয়বস্তুতে কোডটি সঠিক কিনা তা নিশ্চিত করুন।

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.

এটি নিম্নরূপ দেখানো হয়.

ডক্টেস্টে লেখা প্রত্যাশিত আউটপুট মান।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.

কমান্ড লাইন থেকে ডক্টেস্ট মডিউল চালান

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

আপনি যদি -m বিকল্পের সাথে একটি স্ক্রিপ্ট হিসাবে doctest চালান, তাহলে যে ফাংশনে 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.

একটি বহিরাগত পাঠ্য ফাইলে পরীক্ষা লেখা

আপনি ডকস্ট্রিং এর পরিবর্তে একটি বহিরাগত পাঠ্য ফাইলে পরীক্ষার কোড লিখতে পারেন।

কিভাবে একটি টেক্সট ফাইল লিখতে হয়

ডকস্ট্রিং-এ বর্ণিত পাইথন ইন্টারেক্টিভ মোড বিন্যাসে লিখুন। ব্যবহার করার জন্য ফাংশন আমদানি করা প্রয়োজন।

আপনি যদি টেক্সট ফাইলটিকে .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 চালানোর জন্য -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.
Copied title and URL