உங்கள் ஆவணங்களுக்குள் செயல்படக்கூடிய எடுத்துக்காட்டுகளை எழுத பைத்தானின் டாக் டெஸ்ட் தொகுதியின் திறனைத் திறக்கவும். ஒரு உலகளாவிய கண்ணோட்டத்துடன் வலுவான, சுய-சோதனை குறியீட்டை எவ்வாறு உருவாக்குவது என்பதை அறிக.
டாக் டெஸ்ட்டை பயன்படுத்துதல்: ஆவணப்படுத்தல் மூலம் இயக்கப்படும் சோதனையின் சக்தி
மென்பொருள் மேம்பாட்டின் வேகமான உலகில், எங்கள் குறியீட்டின் நம்பகத்தன்மையையும் சரியான தன்மையையும் உறுதி செய்வது மிக முக்கியம். திட்டங்கள் சிக்கலானதாக வளரும்போது மற்றும் குழுக்கள் வெவ்வேறு புவியியல் பகுதிகளில் விரிவடையும்போது, குறியீடு தரத்தை பராமரிப்பது இன்னும் முக்கியமான சவாலாகிறது. பல்வேறு சோதனை கட்டமைப்புகள் இருக்கும்போது, பைதான் உங்கள் ஆவணத்தில் சோதனையை நேரடியாக ஒருங்கிணைக்க ஒரு தனித்துவமான மற்றும் பெரும்பாலும் குறைத்து மதிப்பிடப்பட்ட கருவியை வழங்குகிறது: டாக் டெஸ்ட் தொகுதி. இந்த அணுகுமுறை, பெரும்பாலும் ஆவணப்படுத்தல் மூலம் இயக்கப்படும் சோதனை அல்லது 'எழுத்தறிவு நிரலாக்கம்' என்று குறிப்பிடப்படுகிறது. இது உங்கள் ஆவண சரங்களுக்குள் எடுத்துக்காட்டுகளை எழுத உங்களை அனுமதிக்கிறது, அவை விளக்கப்படமாக மட்டுமல்லாமல், செயல்படக்கூடிய சோதனைகளாகவும் இருக்கும்.
ஒரு உலகளாவிய பார்வையாளர்களுக்கு, வெவ்வேறு பின்னணிகள் மற்றும் குறிப்பிட்ட சோதனை முறைகள் பற்றிய மாறுபட்ட அளவிலான அறிமுகம் பொதுவானது, டாக் டெஸ்ட் ஒரு கட்டாய நன்மையை வழங்குகிறது. குறியீடு எவ்வாறு செயல்பட வேண்டும் என்பதைப் புரிந்துகொள்வதற்கும், அது உண்மையில் செயல்படுகிறதா என்பதை சரிபார்ப்பதற்கும் உள்ள இடைவெளியை இது நிரப்புகிறது, குறியீட்டின் சூழலில் நேரடியாக. இந்த இடுகை டாக் டெஸ்ட் தொகுதியின் நுணுக்கங்களை ஆராயும், அதன் நன்மைகள், நடைமுறை பயன்பாடுகள், மேம்பட்ட பயன்பாடு மற்றும் உலகெங்கிலும் உள்ள டெவலப்பர்களுக்கு இது எவ்வாறு ஒரு சக்திவாய்ந்த சொத்தாக இருக்கும் என்பதை ஆராயும்.
டாக் டெஸ்ட் என்றால் என்ன?
பைத்தானில் உள்ள டாக் டெஸ்ட் தொகுதி ஆவண சரங்களில் உட்பொதிக்கப்பட்ட எடுத்துக்காட்டுகளைக் கண்டுபிடித்து இயக்க வடிவமைக்கப்பட்டுள்ளது. ஒரு ஆவண சரம் என்பது ஒரு தொகுதி, செயல்பாடு, வகுப்பு அல்லது முறை வரையறையில் முதல் அறிக்கையாக தோன்றும் ஒரு சரம் எழுத்தாகும். டாக் டெஸ்ட் ஊடாடும் பைதான் அமர்வுகள் போல் தோன்றும் வரிகளை (>>>
இல் தொடங்கும்) சோதனைகளாக கருதுகிறது. பின்னர் இந்த எடுத்துக்காட்டுகளை இயக்கி ஆவண சரத்தில் காட்டப்பட்டுள்ளபடி எதிர்பார்க்கப்படும் வெளியீட்டுடன் ஒப்பிடுகிறது.
உங்கள் ஆவணப்படுத்தல் உங்கள் குறியீடு என்ன செய்கிறது என்பதை விவரிக்கக்கூடாது, ஆனால் அதை செயல்பாட்டில் காட்டவும் வேண்டும் என்பது முக்கிய யோசனை. இந்த எடுத்துக்காட்டுகள் இரட்டை நோக்கத்திற்கு உதவுகின்றன: அவை பயனர்களுக்கும் டெவலப்பர்களுக்கும் உங்கள் குறியீட்டை எவ்வாறு பயன்படுத்துவது என்பதைப் பற்றி கற்பிக்கின்றன, மேலும் அவை ஒரே நேரத்தில் சிறிய, தன்னிறைவான அலகு சோதனைகளாக செயல்படுகின்றன.
இது எவ்வாறு வேலை செய்கிறது: ஒரு எளிய உதாரணம்
ஒரு நேரடியான பைதான் செயல்பாட்டைக் கருத்தில் கொள்வோம். அதை எவ்வாறு பயன்படுத்துவது என்பதற்கான ஒரு எடுத்துக்காட்டை உள்ளடக்கிய ஒரு ஆவண சரத்தை எழுதுவோம், மேலும் டாக் டெஸ்ட் இந்த எடுத்துக்காட்டை சரிபார்க்கும்.
def greet(name):
"""
Returns a greeting message.
Examples:
>>> greet('World')
'Hello, World!'
>>> greet('Pythonista')
'Hello, Pythonista!'
"""
return f'Hello, {name}!'
இந்த சோதனைகளை இயக்க, இந்த குறியீட்டை ஒரு பைதான் கோப்பில் (எ.கா., greetings.py
) சேமித்து, பின்னர் பின்வரும் கட்டளையைப் பயன்படுத்தி உங்கள் முனையத்திலிருந்து இயக்கலாம்:
python -m doctest greetings.py
செயல்பாட்டின் வெளியீடு ஆவண சரத்தில் எதிர்பார்க்கப்படும் வெளியீட்டுடன் பொருந்தினால், டாக் டெஸ்ட் தோல்விகள் எதுவும் இல்லை என்று தெரிவிக்கும். ஒரு பொருத்தமின்மை இருந்தால், அது முரண்பாட்டை எடுத்துக்காட்டும், இது உங்கள் குறியீடு அல்லது அதன் நடத்தை பற்றிய உங்கள் புரிதலில் சாத்தியமான சிக்கலைக் குறிக்கிறது.
உதாரணமாக, செயல்பாட்டை இவ்வாறு மாற்றியமைத்தால்:
def greet_buggy(name):
"""
Returns a greeting message (with a bug).
Examples:
>>> greet_buggy('World')
'Hello, World!' # Expected output
"""
return f'Hi, {name}!' # Incorrect greeting
python -m doctest greetings.py
ஐ இயக்குவது இது போன்ற வெளியீட்டை உருவாக்கும்:
**********************************************************************
File "greetings.py", line 7, in greetings.greet_buggy
Failed example:
greet_buggy('World')
Expected:
'Hello, World!'
Got:
'Hi, World!'
**********************************************************************
1 items had failures:
1 of 1 in greetings.greet_buggy
***Test Failed*** 1 failures.
இந்த தெளிவான வெளியீடு சரியான வரியையும் தோல்வியின் தன்மையையும் சுட்டிக்காட்டுகிறது, இது பிழைத்திருத்தத்திற்கு நம்பமுடியாத மதிப்பு வாய்ந்தது.
ஆவணப்படுத்தல் மூலம் இயக்கப்படும் சோதனையின் நன்மைகள்
டாக் டெஸ்ட்டை ஏற்றுக்கொள்வது பல கட்டாய நன்மைகளை வழங்குகிறது, குறிப்பாக கூட்டு மற்றும் சர்வதேச மேம்பாட்டு சூழல்களுக்கு:
1. ஒருங்கிணைந்த ஆவணப்படுத்தல் மற்றும் சோதனை
மிகவும் வெளிப்படையான நன்மை ஆவணப்படுத்தல் மற்றும் சோதனையின் ஒருங்கிணைப்பு ஆகும். உங்கள் ஆவணப்படுத்தலுக்கும் யூனிட் சோதனைகளுக்கும் தனித்தனி எடுத்துக்காட்டுகளைப் பராமரிப்பதற்கு பதிலாக, உங்களிடம் உண்மையின் ஒரு ஆதாரம் உள்ளது. இது தேவையற்ற தன்மையையும், அவை ஒத்திசைவற்றுப் போவதற்கான வாய்ப்பையும் குறைக்கிறது.
2. மேம்படுத்தப்பட்ட குறியீடு தெளிவு மற்றும் புரிதல்
ஆவண சரங்களுக்குள் செயல்படக்கூடிய எடுத்துக்காட்டுகளை எழுதுவது, டெவலப்பர்கள் தங்கள் குறியீட்டை எவ்வாறு பயன்படுத்த வேண்டும் என்பதைப் பற்றி தீவிரமாக சிந்திக்க வைக்கிறது. இந்த செயல்முறை பெரும்பாலும் தெளிவான, மிகவும் உள்ளுணர்வு செயல்பாட்டு கையொப்பங்களுக்கு வழிவகுக்கிறது மற்றும் விரும்பிய நடத்தை பற்றிய ஆழமான புரிதலை வழங்குகிறது. புதிய குழு உறுப்பினர்கள் அல்லது மாறுபட்ட மொழி மற்றும் தொழில்நுட்ப பின்னணியில் இருந்து வரும் வெளிப்புற பங்களிப்பாளர்களுக்கு, இந்த எடுத்துக்காட்டுகள் உடனடி, இயக்கக்கூடிய வழிகாட்டிகளாக செயல்படுகின்றன.
3. உடனடி கருத்து மற்றும் எளிதான பிழைத்திருத்தம்
ஒரு சோதனை தோல்வியுற்றால், தோல்வி எங்கு ஏற்பட்டது என்பதையும், எதிர்பார்க்கப்படும் மற்றும் உண்மையான வெளியீட்டிற்கு இடையிலான வித்தியாசத்தையும் பற்றி டாக் டெஸ்ட் துல்லியமான தகவலை வழங்குகிறது. இந்த உடனடி கருத்து சுழற்சி பிழைத்திருத்த செயல்முறையை கணிசமாக துரிதப்படுத்துகிறது.
4. சோதிக்கக்கூடிய குறியீடு வடிவமைப்பை ஊக்குவிக்கிறது
டாக் டெஸ்ட்களை எழுதும் பயிற்சி, டெவலப்பர்களை சோதிக்க எளிதான செயல்பாடுகளை எழுத ஊக்குவிக்கிறது. இதன் பொருள் பெரும்பாலும் தெளிவான உள்ளீடுகள் மற்றும் வெளியீடுகளுடன் செயல்பாடுகளை வடிவமைத்தல், பக்க விளைவுகளை குறைத்தல் மற்றும் சாத்தியமான இடங்களில் சிக்கலான சார்புகளை தவிர்ப்பது - இவை அனைத்தும் வலுவான மென்பொருள் பொறியியலுக்கான நல்ல நடைமுறைகள்.
5. நுழைவதற்கான குறைந்த தடையாக
முறையான சோதனை முறைகளுக்கு புதிய டெவலப்பர்களுக்கு, டாக் டெஸ்ட் ஒரு மென்மையான அறிமுகத்தை வழங்குகிறது. தொடரியல் நன்கு தெரிந்திருக்கும் (இது பைதான் ஊடாடும் மொழிபெயர்ப்பாளரைப் பின்பற்றுகிறது), இது மிகவும் சிக்கலான சோதனை கட்டமைப்புகளை அமைப்பதை விட குறைவான பயமுறுத்தலாக உள்ளது. இது முந்தைய சோதனை அனுபவத்தின் மாறுபட்ட அளவைக் கொண்ட உலகளாவிய குழுக்களில் குறிப்பாக நன்மை பயக்கும்.
6. உலகளாவிய குழுக்களுக்கான மேம்படுத்தப்பட்ட ஒத்துழைப்பு
சர்வதேச குழுக்களில், தெளிவு மற்றும் துல்லியம் ஆகியவை முக்கியம். டாக் டெஸ்ட் எடுத்துக்காட்டுகள் செயல்பாட்டின் தெளிவற்ற விளக்கங்களை வழங்குகின்றன, அவை ஓரளவு மொழி தடைகளை மீறுகின்றன. சுருக்கமான ஆங்கில விளக்கங்களுடன் இணைந்து, இந்த செயல்படக்கூடிய எடுத்துக்காட்டுகள் குறியீட்டு தளத்தின் உலகளவில் புரிந்துகொள்ளக்கூடிய கூறுகளாக மாறும், வெவ்வேறு கலாச்சாரங்கள் மற்றும் நேர மண்டலங்களில் சீரான புரிதலையும் பயன்பாட்டையும் ஊக்குவிக்கும்.
7. வாழும் ஆவணப்படுத்தல்
குறியீடு உருவாகும்போது ஆவணப்படுத்தல் விரைவாக காலாவதியாகிவிடும். டாக் டெஸ்ட்கள் செயல்படுத்தக்கூடியவையாக இருப்பதால், உங்கள் ஆவணப்படுத்தல் உங்கள் குறியீட்டின் தற்போதைய நடத்தையின் உண்மையான பிரதிநிதித்துவமாக இருப்பதை உறுதி செய்கிறது. எடுத்துக்காட்டை உடைக்கும் வகையில் குறியீடு மாறினால், டாக் டெஸ்ட் தோல்வியடையும், ஆவணப்படுத்தல் புதுப்பிக்கப்பட வேண்டும் என்று உங்களை எச்சரிக்கும்.
நடைமுறை பயன்பாடுகள் மற்றும் எடுத்துக்காட்டுகள்
டாக் டெஸ்ட் பல்துறை திறன் கொண்டது மற்றும் ஏராளமான சூழ்நிலைகளில் பயன்படுத்தப்படலாம். சில நடைமுறை எடுத்துக்காட்டுகள் இங்கே:
1. கணித செயல்பாடுகள்
கணித செயல்பாடுகளை சரிபார்ப்பது ஒரு முக்கிய பயன்பாட்டு நிகழ்வு.
def add(a, b):
"""
Adds two numbers.
Examples:
>>> add(5, 3)
8
>>> add(-1, 1)
0
>>> add(0.5, 0.25)
0.75
"""
return a + b
2. சர கையாளுதல்
சர மாற்றங்களைச் சோதிப்பதும் நேரடியானது.
def capitalize_first_letter(text):
"""
Capitalizes the first letter of a string.
Examples:
>>> capitalize_first_letter('hello')
'Hello'
>>> capitalize_first_letter('WORLD')
'WORLD'
>>> capitalize_first_letter('')
''
"""
if not text:
return ''
return text[0].upper() + text[1:]
3. தரவு கட்டமைப்பு செயல்பாடுகள்
பட்டியல்கள், அகராதிகள் மற்றும் பிற தரவு கட்டமைப்புகள் மீதான செயல்பாடுகளைச் சரிபார்க்கிறது.
def get_unique_elements(input_list):
"""
Returns a list of unique elements from the input list, preserving order.
Examples:
>>> get_unique_elements([1, 2, 2, 3, 1, 4])
[1, 2, 3, 4]
>>> get_unique_elements(['apple', 'banana', 'apple'])
['apple', 'banana']
>>> get_unique_elements([])
[]
"""
seen = set()
unique_list = []
for item in input_list:
if item not in seen:
seen.add(item)
unique_list.append(item)
return unique_list
4. விதிவிலக்குகளை கையாளுதல்
உங்கள் குறியீடு எதிர்பார்க்கப்படும் விதிவிலக்குகளை எழுப்புகிறதா என்பதையும் டாக் டெஸ்ட் சரிபார்க்க முடியும்.
def divide(numerator, denominator):
"""
Divides two numbers.
Examples:
>>> divide(10, 2)
5.0
>>> divide(5, 0)
Traceback (most recent call last):
...
ZeroDivisionError: division by zero
"""
return numerator / denominator
Traceback (most recent call last):
ஐத் தொடர்ந்து குறிப்பிட்ட விதிவிலக்கு வகை மற்றும் செய்தியைக் கவனியுங்கள். நீள்வட்டம் (...
) என்பது ட்ரேஸ்பேக்கிற்குள் எந்த எழுத்துக்களையும் பொருத்தும் ஒரு வைல்ட்கார்டு ஆகும்.
5. வகுப்புகளுக்குள் முறைகளைச் சோதித்தல்
டாக் டெஸ்ட் வகுப்பு முறைகளுடன் தடையின்றி வேலை செய்கிறது.
class Circle:
"""
Represents a circle.
Examples:
>>> c = Circle(radius=5)
>>> c.area()
78.53981633974483
>>> c.circumference()
31.41592653589793
"""
def __init__(self, radius):
if radius < 0:
raise ValueError("Radius cannot be negative.")
self.radius = radius
def area(self):
import math
return math.pi * self.radius ** 2
def circumference(self):
import math
return 2 * math.pi * self.radius
மேம்பட்ட டாக் டெஸ்ட் பயன்பாடு மற்றும் கட்டமைப்பு
அடிப்படை பயன்பாடு நேரடியானது என்றாலும், டாக் டெஸ்ட் அதன் நடத்தை தனிப்பயனாக்க மற்றும் உங்கள் பணிப்பாய்வில் மிகவும் திறம்பட ஒருங்கிணைக்க பல விருப்பங்களை வழங்குகிறது.
1. டாக் டெஸ்ட்களை நிரலாக்க முறையில் இயக்குதல்
உங்கள் பைதான் ஸ்கிரிப்டுகளிலிருந்து டாக் டெஸ்ட்டை அழைக்கலாம், இது சோதனை இயக்கியை உருவாக்க அல்லது பிற உருவாக்க செயல்முறைகளுடன் ஒருங்கிணைக்க பயனுள்ளதாக இருக்கும்.
# In a file, e.g., test_all.py
import doctest
import greetings # Assuming greetings.py contains the greet function
import my_module # Assume other modules also have doctests
if __name__ == "__main__":
results = doctest.testmod(m=greetings, verbose=True)
# You can also test multiple modules:
# results = doctest.testmod(m=my_module, verbose=True)
print(f"Doctest results for greetings: {results}")
# To test all modules in the current directory (use with caution):
# for name, module in sys.modules.items():
# if name.startswith('your_package_prefix'):
# doctest.testmod(m=module, verbose=True)
doctest.testmod()
செயல்பாடு குறிப்பிட்ட தொகுதியில் காணப்படும் அனைத்து சோதனைகளையும் இயக்குகிறது. verbose=True
வாதம் எந்த சோதனைகள் தேர்ச்சி பெற்றன மற்றும் தோல்வியடைந்தன உட்பட விரிவான வெளியீட்டை அச்சிடும்.
2. டாக் டெஸ்ட் விருப்பங்கள் மற்றும் கொடிகள்
சோதனை சூழலை எவ்வாறு கட்டுப்படுத்துவது மற்றும் ஒப்பீடுகள் எவ்வாறு செய்யப்படுகின்றன என்பதற்கான வழியை டாக் டெஸ்ட் வழங்குகிறது. இது testmod
இல் உள்ள optionflags
வாதத்தைப் பயன்படுத்தி அல்லது டாக் டெஸ்ட்டிற்குள் செய்யப்படுகிறது.
ELLIPSIS
: வெளியீட்டில் உள்ள எழுத்துக்களின் எந்த சரத்தையும் பொருத்த...
ஐ அனுமதிக்கிறது.NORMALIZE_WHITESPACE
: வெற்று இடைவெளிகளில் உள்ள வேறுபாடுகளை புறக்கணிக்கிறது.IGNORE_EXCEPTION_DETAIL
: ட்ரேஸ்பேக்குகளின் விவரத்தை புறக்கணிக்கிறது, விதிவிலக்கு வகையை மட்டும் ஒப்பிடுகிறது.REPORT_NDIFF
: தோல்விகளுக்கான வேறுபாடுகளைப் புகாரளிக்கிறது.REPORT_UDIFF
: ஒருங்கிணைந்த வேறுபாடு வடிவத்தில் தோல்விகளுக்கான வேறுபாடுகளைப் புகாரளிக்கிறது.REPORT_CDIFF
: சூழல் வேறுபாடு வடிவத்தில் தோல்விகளுக்கான வேறுபாடுகளைப் புகாரளிக்கிறது.REPORT_FAILURES
: தோல்விகளைப் புகாரளிக்கிறது (இயல்புநிலை).ALLOW_UNICODE
: வெளியீட்டில் யூனிகோட் எழுத்துக்களை அனுமதிக்கிறது.SKIP
:# SKIP
உடன் குறிக்கப்பட்டால் ஒரு சோதனையைத் தவிர்க்க அனுமதிக்கிறது.
இந்த கொடிகளை doctest.testmod()
க்கு அனுப்பலாம்:
import doctest
import math_utils
if __name__ == "__main__":
doctest.testmod(m=math_utils, optionflags=doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE)
மாற்றாக, ஒரு சிறப்பு கருத்தைப் பயன்படுத்தி ஆவண சரத்திற்குள் விருப்பங்களை நீங்கள் குறிப்பிடலாம்:
def complex_calculation(x):
"""
Performs a calculation that might have varying whitespace.
>>> complex_calculation(10)
Calculation result: 100.0
# doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
>>> another_calculation(5)
Result is ...
"""
pass # Placeholder for actual implementation
3. மிதக்கும் புள்ளி ஒப்பீடுகளை கையாளுதல்
துல்லிய சிக்கல்கள் காரணமாக மிதக்கும் புள்ளி எண்கணிதம் தந்திரமானதாக இருக்கலாம். கணித ரீதியாக சரியான ஆனால் அவற்றின் தசம பிரதிநிதித்துவத்தில் சற்று மாறுபடும் சோதனைகளில் டாக் டெஸ்ட்டின் இயல்புநிலை நடத்தை தோல்வியடையும்.
இந்த உதாரணத்தைக் கவனியுங்கள்:
def square_root(n):
"""
Calculates the square root of a number.
>>> square_root(2)
1.4142135623730951 # Might vary slightly
"""
import math
return math.sqrt(n)
இதை வலுவாகக் கையாள, நீங்கள் ELLIPSIS
கொடியை மிகவும் நெகிழ்வான வெளியீட்டு வடிவத்துடன் இணைத்துப் பயன்படுத்தலாம் அல்லது மிகவும் துல்லியமான மிதக்கும் புள்ளி கூற்றுக்களுக்கு வெளிப்புற சோதனை கட்டமைப்புகளை நம்பலாம். இருப்பினும், பல சந்தர்ப்பங்களில், உங்கள் சூழலுக்கு எதிர்பார்க்கப்படும் வெளியீடு துல்லியமானது என்பதை உறுதி செய்வது போதுமானது. குறிப்பிடத்தக்க துல்லியம் தேவைப்பட்டால், உங்கள் செயல்பாட்டின் வெளியீடு துல்லியத்தை இயல்பாக கையாளும் வகையில் குறிப்பிடப்பட வேண்டும் என்பதற்கான அறிகுறியாக இருக்கலாம் (எ.கா., `Decimal` ஐப் பயன்படுத்துதல்).
4. வெவ்வேறு சூழல்கள் மற்றும் இடங்கள் முழுவதும் சோதனை
உலகளாவிய மேம்பாட்டிற்கு, இடம் அமைப்புகள், தேதி/நேர வடிவங்கள் அல்லது நாணய பிரதிநிதித்துவங்களில் சாத்தியமான வேறுபாடுகளைக் கவனியுங்கள். டாக் டெஸ்ட் எடுத்துக்காட்டுகள் முடிந்தவரை சூழல்-அஞ்ஞானவாதியாக எழுதப்பட வேண்டும். உங்கள் குறியீட்டின் வெளியீடு இடம் சார்ந்ததாக இருந்தால், நீங்கள்:
- டாக் டெஸ்ட்களை இயக்குவதற்கு முன் ஒரு நிலையான இடத்தை அமைக்கவும்.
- வெளியீட்டின் மாறி பகுதிகளை புறக்கணிக்க
ELLIPSIS
கொடியைப் பயன்படுத்தவும். - இடம் சார்ந்த தரவின் சரியான சரம் பிரதிநிதித்துவங்களை விட தர்க்கத்தை சோதிப்பதில் கவனம் செலுத்துங்கள்.
உதாரணமாக, தேதி வடிவமைத்தல் செயல்பாட்டைச் சோதிக்க அதிக கவனமாக அமைவு தேவைப்படலாம்:
import datetime
import locale
def format_date_locale(date_obj):
"""
Formats a date object according to the current locale.
# This test assumes a specific locale is set for demonstration.
# In a real scenario, you'd need to manage locale setup carefully.
# For example, using: locale.setlocale(locale.LC_TIME, 'en_US.UTF-8')
# Example for a US locale:
# >>> dt = datetime.datetime(2023, 10, 27)
# >>> format_date_locale(dt)
# '10/27/2023'
# Example for a German locale:
# >>> dt = datetime.datetime(2023, 10, 27)
# >>> format_date_locale(dt)
# '27.10.2023'
# A more robust test might use ELLIPSIS if locale is unpredictable:
# >>> dt = datetime.datetime(2023, 10, 27)
# >>> format_date_locale(dt)
# '...'
# This approach is less precise but more resilient to locale changes.
"""
try:
# Attempt to use locale formatting, fallback if unavailable
return locale.strxfrm(date_obj.strftime('%x'))
except locale.Error:
# Fallback for systems without locale data
return date_obj.strftime('%Y-%m-%d') # ISO format as fallback
இது டாக் டெஸ்ட்களை எழுதும் போது சூழலைக் கருத்தில் கொள்வதன் முக்கியத்துவத்தை எடுத்துக்காட்டுகிறது, குறிப்பாக உலகளாவிய பயன்பாடுகளுக்கு.
எப்போது டாக் டெஸ்ட்டைப் பயன்படுத்துவது (மற்றும் எப்போது பயன்படுத்தக்கூடாது)
டாக் டெஸ்ட் பல சூழ்நிலைகளுக்கு ஒரு சிறந்த கருவி, ஆனால் அது ஒரு சஞ்சீவி அல்ல. அதன் பலங்களையும் பலவீனங்களையும் புரிந்துகொள்வது தகவலறிந்த முடிவுகளை எடுக்க உதவுகிறது.
சிறந்த பயன்பாட்டு நிகழ்வுகள்:
- சிறிய பயன்பாட்டு செயல்பாடுகள் மற்றும் தொகுதிகள்: சில தெளிவான எடுத்துக்காட்டுகள் செயல்பாட்டை போதுமான அளவு நிரூபிக்கின்றன.
- API ஆவணப்படுத்தல்: பொது API களை எவ்வாறு பயன்படுத்துவது என்பதற்கான உறுதியான, இயக்கக்கூடிய எடுத்துக்காட்டுகளை வழங்க.
- பைதான் கற்பித்தல் மற்றும் கற்றல்: கல்விப் பொருட்களில் இயக்கக்கூடிய எடுத்துக்காட்டுகளை உட்பொதிக்க ஒரு வழியாக.
- விரைவான முன்மாதிரி: அவற்றின் விளக்கத்துடன் சிறிய குறியீடுகளை விரைவாக சோதிக்க விரும்பும் போது.
- உயர் ஆவணப்படுத்தல் தரத்தை நோக்கமாகக் கொண்ட நூலகங்கள்: ஆவணப்படுத்தலும் குறியீடும் ஒத்திசைவில் இருப்பதை உறுதிப்படுத்த.
பிற சோதனை கட்டமைப்புகள் சிறப்பாக இருக்கக்கூடிய போது:
- சிக்கலான சோதனை சூழ்நிலைகள்: சிக்கலான அமைப்பு, கேலி செய்தல் அல்லது வெளிப்புற சேவைகளுடன் ஒருங்கிணைத்தல் போன்ற சோதனைகளுக்கு,
unittest
அல்லதுpytest
போன்ற கட்டமைப்புகள் மிகவும் சக்திவாய்ந்த அம்சங்களையும் கட்டமைப்பையும் வழங்குகின்றன. - பெரிய அளவிலான சோதனை தொகுப்புகள்: டாக் டெஸ்ட்டை நிரலாக்க முறையில் இயக்க முடியும் என்றாலும், நூற்றுக்கணக்கான அல்லது ஆயிரக்கணக்கான சோதனைகளை நிர்வகிப்பது பிரத்யேக சோதனை கட்டமைப்புகளுடன் ஒப்பிடும்போது கடினமானதாக இருக்கலாம்.
- செயல்திறன்-முக்கியமான சோதனைகள்: டாக் டெஸ்ட்டின் மேல்நிலை மிகவும் மேம்படுத்தப்பட்ட சோதனை இயக்கியை விட சற்று அதிகமாக இருக்கலாம்.
- நடத்தை அடிப்படையிலான மேம்பாடு (BDD): BDD க்கு,
behave
போன்ற கட்டமைப்புகள் மிகவும் இயல்பான மொழி தொடரியலைப் பயன்படுத்தி தேவைகளை செயல்படுத்தக்கூடிய விவரக்குறிப்புகளாக வரைபடமாக்க வடிவமைக்கப்பட்டுள்ளன. - விரிவான சோதனை அமைப்பு/கலைப்பு தேவைப்படும்போது:
unittest
மற்றும்pytest
சாதனங்கள் மற்றும் அமைப்பு/கலைப்பு நடைமுறைகளுக்கான வலுவான வழிமுறைகளை வழங்குகின்றன.
பிற கட்டமைப்புகளுடன் டாக் டெஸ்ட்டை ஒருங்கிணைத்தல்
டாக் டெஸ்ட் மற்ற சோதனை கட்டமைப்புகளுடன் பரஸ்பரம் பிரத்தியேகமானது அல்ல என்பதை கவனத்தில் கொள்ள வேண்டும். அதன் குறிப்பிட்ட பலங்களுக்காக நீங்கள் டாக் டெஸ்ட்டைப் பயன்படுத்தலாம் மற்றும் மிகவும் சிக்கலான சோதனை தேவைகளுக்கு pytest
அல்லது unittest
உடன் அதை பூர்த்தி செய்யலாம். பல திட்டங்கள் ஒரு கலப்பின அணுகுமுறையை ஏற்றுக்கொள்கின்றன, நூலக அளவிலான எடுத்துக்காட்டுகள் மற்றும் ஆவணப்படுத்தல் சரிபார்ப்புக்கு டாக் டெஸ்ட்டையும், ஆழமான யூனிட் மற்றும் ஒருங்கிணைப்பு சோதனைக்கு pytest
ஐயும் பயன்படுத்துகின்றன.
உதாரணமாக, pytest
உங்கள் திட்டத்தில் டாக் டெஸ்ட்களைக் கண்டுபிடித்து இயக்குவதற்கு சிறந்த ஆதரவைக் கொண்டுள்ளது. pytest
ஐ நிறுவுவதன் மூலம், இது உங்கள் தொகுதிகளில் உள்ள டாக் டெஸ்ட்களை தானாகக் கண்டுபிடித்து இயக்க முடியும், அவற்றை அதன் அறிக்கையிடல் மற்றும் இணையான செயல்படுத்தும் திறன்களில் ஒருங்கிணைக்கிறது.
டாக் டெஸ்ட்களை எழுதுவதற்கான சிறந்த நடைமுறைகள்
டாக் டெஸ்ட்டின் செயல்திறனை அதிகரிக்க, இந்த சிறந்த நடைமுறைகளைப் பின்பற்றவும்:
- எடுத்துக்காட்டுகளை சுருக்கமாகவும் கவனம் செலுத்தியும் வைத்திருங்கள்: ஒவ்வொரு டாக் டெஸ்ட் எடுத்துக்காட்டும் செயல்பாட்டின் அல்லது முறையின் ஒரு அம்சத்தையோ அல்லது பயன்பாட்டு நிகழ்வையோ நிரூபிக்க வேண்டும்.
- எடுத்துக்காட்டுகள் தன்னிறைவானவை என்பதை உறுதிப்படுத்தவும்: வெளிப்படையாக நிர்வகிக்கப்படாவிட்டால், வெளிப்புற நிலை அல்லது முந்தைய சோதனை முடிவுகளை நம்புவதைத் தவிர்க்கவும்.
- தெளிவான மற்றும் புரியக்கூடிய வெளியீட்டைப் பயன்படுத்தவும்: எதிர்பார்க்கப்படும் வெளியீடு தெளிவற்றதாகவும் சரிபார்க்க எளிதாகவும் இருக்க வேண்டும்.
- விதிவிலக்குகளை சரியாகக் கையாளவும்: எதிர்பார்க்கப்படும் பிழைகளுக்கு
Traceback
வடிவமைப்பை துல்லியமாகப் பயன்படுத்தவும். - விருப்பக் கொடிகளை விவேகத்துடன் பயன்படுத்தவும்: சிறிய, பொருத்தமற்ற மாற்றங்களுக்கு சோதனைகளை மேலும் மீள்தன்மையடையச் செய்ய
ELLIPSIS
மற்றும்NORMALIZE_WHITESPACE
போன்ற கொடிகளைப் பயன்படுத்தவும். - விளிம்பு நிகழ்வுகள் மற்றும் எல்லை நிலைமைகளைச் சோதிக்கவும்: எந்த யூனிட் சோதனையைப் போலவே, டாக் டெஸ்ட்களும் பொதுவான உள்ளீடுகளையும் அதே போல் குறைவான பொதுவான உள்ளீடுகளையும் உள்ளடக்கியிருக்க வேண்டும்.
- டாக் டெஸ்ட்களை தவறாமல் இயக்கவும்: பின்னடைவுகளை ஆரம்பத்திலேயே பிடிக்க உங்கள் தொடர்ச்சியான ஒருங்கிணைப்பு (CI) குழாய்த்திட்டத்தில் அவற்றை ஒருங்கிணைக்கவும்.
- *ஏன்* என்பதை ஆவணப்படுத்தவும்: டாக் டெஸ்ட்கள் *எப்படி* என்பதைக் காட்டும்போது, உங்கள் உரை ஆவணப்படுத்தல் இந்த செயல்பாடு ஏன் உள்ளது மற்றும் அதன் நோக்கம் என்ன என்பதை விளக்க வேண்டும்.
- சர்வதேசமயமாக்கலைக் கவனியுங்கள்: உங்கள் பயன்பாடு மொழிபெயர்க்கப்பட்ட தரவைக் கையாளுகிறதென்றால், உங்கள் டாக் டெஸ்ட் எடுத்துக்காட்டுகள் வெவ்வேறு இடங்களால் எவ்வாறு பாதிக்கப்படலாம் என்பதை மனதில் கொள்ளுங்கள். தெளிவான, உலகளவில் புரிந்துகொள்ளப்பட்ட பிரதிநிதித்துவங்களுடன் சோதிக்கவும் அல்லது வேறுபாடுகளைப் பொருத்துவதற்கு கொடிகளைப் பயன்படுத்தவும்.
உலகளாவிய பரிசீலனைகள் மற்றும் டாக் டெஸ்ட்
சர்வதேச குழுக்களில் பணிபுரியும் அல்லது உலகளாவிய பயனர் தளத்துடன் திட்டங்களில் பணிபுரியும் டெவலப்பர்களுக்கு, டாக் டெஸ்ட் ஒரு தனித்துவமான நன்மையை வழங்குகிறது:
- குறைக்கப்பட்ட தெளிவின்மை: செயல்படக்கூடிய எடுத்துக்காட்டுகள் ஒரு பொதுவான மொழியாக செயல்படுகின்றன, அவை மொழி அல்லது கலாச்சார வேறுபாடுகளிலிருந்து எழக்கூடிய தவறான விளக்கங்களைக் குறைக்கின்றன. ஒரு வெளியீட்டைக் காட்டும் குறியீடு பெரும்பாலும் ஒரு உரை விளக்கத்தை விட உலகளவில் புரிந்து கொள்ளப்படுகிறது.
- புதிய குழு உறுப்பினர்களை உள்வாங்குதல்: மாறுபட்ட பின்னணியில் இருந்து சேரும் டெவலப்பர்களுக்கு, குறியீட்டுத் தளத்தை எவ்வாறு பயன்படுத்துவது என்பதற்கான உடனடி, நடைமுறை எடுத்துக்காட்டுகளை டாக் டெஸ்ட்கள் வழங்குகின்றன, அவர்களின் அதிகரிப்பு நேரத்தை விரைவுபடுத்துகின்றன.
- செயல்பாட்டின் குறுக்கு-கலாச்சார புரிதல்: உலகளாவிய தரவுடன் தொடர்பு கொள்ளும் கூறுகளைச் சோதிக்கும்போது (எ.கா., நாணய மாற்று, நேர மண்டல கையாளுதல், சர்வதேசமயமாக்கல் நூலகங்கள்), டாக் டெஸ்ட்கள் வெவ்வேறு எதிர்பார்க்கப்படும் வடிவங்களில் எதிர்பார்க்கப்படும் வெளியீடுகளைச் சரிபார்க்க உதவும், அவை போதுமான நெகிழ்வுத்தன்மையுடன் எழுதப்பட்டிருந்தால் (எ.கா.,
ELLIPSIS
ஐப் பயன்படுத்துதல் அல்லது கவனமாக வடிவமைக்கப்பட்ட எதிர்பார்க்கப்படும் சரங்கள்). - ஆவணப்படுத்தலில் நிலைத்தன்மை: விநியோகிக்கப்பட்ட குழுக்கள் உள்ள திட்டங்களுக்கு ஆவணப்படுத்தல் குறியீட்டுடன் ஒத்திசைவில் இருப்பதை உறுதி செய்வது மிக முக்கியம், அங்கு தகவல்தொடர்பு மேல்நிலை அதிகமாகும். டாக் டெஸ்ட் இந்த ஒத்திசைவை செயல்படுத்துகிறது.
எடுத்துக்காட்டு: டாக் டெஸ்ட்டுடன் ஒரு எளிய நாணய மாற்றி
USD ஐ EUR ஆக மாற்றும் ஒரு செயல்பாட்டை கற்பனை செய்து பார்ப்போம். எளிமைக்காக, நாங்கள் ஒரு நிலையான விகிதத்தைப் பயன்படுத்துவோம்.
def usd_to_eur(amount_usd):
"""
Converts an amount from US Dollars (USD) to Euros (EUR) using a fixed rate.
The current exchange rate used is 1 USD = 0.93 EUR.
Examples:
>>> usd_to_eur(100)
93.0
>>> usd_to_eur(0)
0.0
>>> usd_to_eur(50.5)
46.965
>>> usd_to_eur(-10)
-9.3
"""
exchange_rate = 0.93
return amount_usd * exchange_rate
இந்த டாக் டெஸ்ட் மிகவும் நேரடியானது. இருப்பினும், மாற்று விகிதம் ஏற்ற இறக்கமாக இருந்தால் அல்லது செயல்பாடு வெவ்வேறு நாணயங்களைக் கையாள வேண்டியிருந்தால், சிக்கலானது அதிகரிக்கும், மேலும் அதிநவீன சோதனை தேவைப்படலாம். இப்போதைக்கு, இந்த எளிய எடுத்துக்காட்டு, ஒரு குறிப்பிட்ட செயல்பாட்டை டாக் டெஸ்ட்கள் எவ்வாறு தெளிவாக வரையறுக்கலாம் மற்றும் சரிபார்க்கலாம் என்பதை நிரூபிக்கிறது, இது குழுவின் இருப்பிடத்தைப் பொருட்படுத்தாமல் நன்மை பயக்கும்.
முடிவுரை
பைதான் டாக் டெஸ்ட் தொகுதி ஒரு சக்திவாய்ந்த, ஆனால் பெரும்பாலும் பயன்படுத்தப்படாத கருவியாகும். இது செயல்படுத்தக்கூடிய எடுத்துக்காட்டுகளை உங்கள் ஆவணத்தில் நேரடியாக ஒருங்கிணைப்பதற்குப் பயன்படுகிறது. சோதனையின் உண்மை ஆதாரமாக ஆவணத்தை மாற்றுவதன் மூலம், குறியீடு தெளிவு, பராமரிப்பு மற்றும் டெவலப்பர் உற்பத்தித்திறன் ஆகியவற்றின் அடிப்படையில் குறிப்பிடத்தக்க நன்மைகளைப் பெறுவீர்கள். உலகளாவிய குழுக்களுக்கு, டாக் டெஸ்ட் குறியீடு நடத்தை புரிந்து கொள்வதற்கும் சரிபார்ப்பதற்கும் ஒரு தெளிவான, தெளிவற்ற மற்றும் உலகளவில் அணுகக்கூடிய முறையை வழங்குகிறது, இது தகவல்தொடர்பு இடைவெளிகளைக் குறைக்கவும் மென்பொருள் தரத்தின் பகிரப்பட்ட புரிதலை வளர்க்கவும் உதவுகிறது.
நீங்கள் ஒரு சிறிய தனிப்பட்ட திட்டத்தில் பணிபுரிந்தாலும் அல்லது ஒரு பெரிய அளவிலான நிறுவன பயன்பாட்டில் பணிபுரிந்தாலும், உங்கள் மேம்பாட்டு பணிப்பாய்வில் டாக் டெஸ்ட்டை இணைப்பது ஒரு பயனுள்ள முயற்சி. இது செயல்படக்கூடியது மட்டுமல்லாமல், விதிவிலக்காக நன்கு ஆவணப்படுத்தப்பட்ட மற்றும் கடுமையாக சோதிக்கப்பட்ட மென்பொருளை உருவாக்குவதற்கான ஒரு படியாகும், இறுதியில் அனைவருக்கும், எல்லா இடங்களிலும் நம்பகமான மற்றும் பராமரிக்கக்கூடிய குறியீட்டிற்கு வழிவகுக்கும்.
இன்று உங்கள் டாக் டெஸ்ட்களை எழுதத் தொடங்கி, ஆவணப்படுத்தல் மூலம் இயக்கப்படும் சோதனையின் நன்மைகளை அனுபவியுங்கள்!