ಟೆಸ್ಟ್ ರಿಪೋರ್ಟಿಂಗ್ (Test Reporting)
ಟೆಸ್ಟ್ಗಳನ್ನು ಚಲಾಯಿಸಿದ ನಂತರ, ಫಲಿತಾಂಶಗಳನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಮತ್ತು ಸುಲಭವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ರೀತಿಯಲ್ಲಿ ನೋಡುವುದು ಬಹಳ ಮುಖ್ಯ. ಟೆಸ್ಟ್ ರಿಪೋರ್ಟ್ಗಳು ಈ ಕೆಲಸವನ್ನು ಮಾಡುತ್ತವೆ. ಅವು ಯಾವ ಟೆಸ್ಟ್ಗಳು ಪಾಸ್ ಆದವು, ಯಾವುವು ಫೇಲ್ ಆದವು, ಮತ್ತು ಫೇಲ್ ಆಗಲು ಕಾರಣವೇನು ಎಂಬ ವಿವರವಾದ ಮಾಹಿತಿಯನ್ನು ಒದಗಿಸುತ್ತವೆ.
HTML ರಿಪೋರ್ಟ್ಗಳು ಅತ್ಯಂತ ಜನಪ್ರಿಯವಾಗಿವೆ, ಏಕೆಂದರೆ ಅವುಗಳನ್ನು ಯಾವುದೇ ವೆಬ್ ಬ್ರೌಸರ್ನಲ್ಲಿ ಸುಲಭವಾಗಿ ನೋಡಬಹುದು ಮತ್ತು ಹಂಚಿಕೊಳ್ಳಬಹುದು.
HtmlTestRunner-rv - HTML ರಿಪೋರ್ಟ್ಗಳಿಗಾಗಿ
HtmlTestRunner-rv ಎಂಬುದು unittest ಫ್ರೇಮ್ವರ್ಕ್ಗಾಗಿ ಸುಂದರವಾದ ಮತ್ತು ವಿವರವಾದ HTML ರಿಪೋರ್ಟ್ಗಳನ್ನು ರಚಿಸಲು ಬಳಸುವ ಒಂದು ಜನಪ್ರಿಯ ಪೈಥಾನ್ ಲೈಬ್ರರಿಯಾಗಿದೆ. ಇದು unittest ನ ಫಲಿತಾಂಶಗಳನ್ನು ತೆಗೆದುಕೊಂಡು, ಅದನ್ನು ಒಂದೇ HTML ಫೈಲ್ ಆಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ.
HtmlTestRunner-rv ಅನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡುವುದು
HtmlTestRunner-rv ಬಳಸಿ ರಿಪೋರ್ಟ್ ರಚಿಸುವುದು
unittest ಬಳಸಿ ಬರೆದ ನಮ್ಮ test_my_math.py ಟೆಸ್ಟ್ಗಳಿಗೆ HTML ರಿಪೋರ್ಟ್ ಅನ್ನು ಹೇಗೆ ರಚಿಸುವುದು ಎಂದು ನೋಡೋಣ.
ಹಂತ 1: ಟೆಸ್ಟ್ ಫೈಲ್ (test_my_math.py)
ಈ ಫೈಲ್ನಲ್ಲಿ ಯಾವುದೇ ಬದಲಾವಣೆ ಇಲ್ಲ.
# test_my_math.py
import unittest
from my_math import add, is_even
class TestMathFunctions(unittest.TestCase):
def test_add_success(self):
"""add ಫಂಕ್ಷನ್ನ ಯಶಸ್ವಿ ಕೇಸ್."""
self.assertEqual(add(5, 3), 8)
def test_add_failure(self):
"""add ಫಂಕ್ಷನ್ನ ವಿಫಲ ಕೇಸ್ (ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ)."""
self.assertEqual(add(2, 2), 5, "2+2 ಐದಕ್ಕೆ ಸಮವಲ್ಲ!")
def test_is_even_success(self):
"""is_even ಫಂಕ್ಷನ್ನ ಯಶಸ್ವಿ ಕೇಸ್."""
self.assertTrue(is_even(10))
@unittest.skip("ಈ ಟೆಸ್ಟ್ ಅನ್ನು ಸದ್ಯಕ್ಕೆ ಸ್ಕಿಪ್ ಮಾಡಲಾಗಿದೆ.")
def test_skip_example(self):
"""ಸ್ಕಿಪ್ ಮಾಡಿದ ಟೆಸ್ಟ್ನ ಉದಾಹರಣೆ."""
self.fail("ಈ ಟೆಸ್ಟ್ ಚಲಾಯಿಸಬಾರದು.")
test_add_failure ಎಂಬ ಹೊಸ ಟೆಸ್ಟ್ ಅನ್ನು ಸೇರಿಸಿದ್ದೇವೆ, ಅದು ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಫೇಲ್ ಆಗುತ್ತದೆ.
* @unittest.skip ಡೆಕೋರೇಟರ್ ಬಳಸಿ ಒಂದು ಟೆಸ್ಟ್ ಅನ್ನು ಸ್ಕಿಪ್ ಮಾಡಿದ್ದೇವೆ.
ಹಂತ 2: ಟೆಸ್ಟ್ ರನ್ನರ್ ಸ್ಕ್ರಿಪ್ಟ್ ರಚಿಸುವುದು
run_tests_and_generate_report.py ಎಂಬ ಹೊಸ ಫೈಲ್ ರಚಿಸಿ. ಈ ಸ್ಕ್ರಿಪ್ಟ್ ನಮ್ಮ ಟೆಸ್ಟ್ಗಳನ್ನು ಚಲಾಯಿಸಿ, HTML ರಿಪೋರ್ಟ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ.
# run_tests_and_generate_report.py
import unittest
import HtmlTestRunner
from test_my_math import TestMathFunctions
def main():
# ಟೆಸ್ಟ್ ಸ್ಯೂಟ್ ರಚಿಸುವುದು
suite = unittest.TestSuite()
# TestMathFunctions ಕ್ಲಾಸ್ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಟೆಸ್ಟ್ಗಳನ್ನು ಸ್ಯೂಟ್ಗೆ ಸೇರಿಸುವುದು
suite.addTest(unittest.makeSuite(TestMathFunctions))
# HTML ಟೆಸ್ಟ್ ರನ್ನರ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುವುದು
# 'reports' ಫೋಲ್ಡರ್ನಲ್ಲಿ ರಿಪೋರ್ಟ್ ಅನ್ನು ಸೇವ್ ಮಾಡುತ್ತದೆ
runner = HtmlTestRunner.HTMLTestRunner(
output='reports',
report_title='ಗಣಿತ ಫಂಕ್ಷನ್ಗಳ ಟೆಸ್ಟ್ ರಿಪೋರ್ಟ್',
descriptions='ಇದು ನಮ್ಮ my_math ಮಾಡ್ಯೂಲ್ನ ಟೆಸ್ಟ್ ಫಲಿತಾಂಶಗಳು.'
)
# ಟೆಸ್ಟ್ ಸ್ಯೂಟ್ ಅನ್ನು ಚಲಾಯಿಸುವುದು
result = runner.run(suite)
print(f"ಟೆಸ್ಟ್ಗಳು ಮುಗಿದಿವೆ. ಯಶಸ್ವಿಯಾದವು: {result.success_count}, ವಿಫಲವಾದವು: {result.failure_count}")
if __name__ == '__main__':
main()
ವಿವರಣೆ:
1. unittest.TestSuite() ಬಳಸಿ ಒಂದು ಖಾಲಿ ಟೆಸ್ಟ್ ಸ್ಯೂಟ್ ಅನ್ನು ರಚಿಸಲಾಗಿದೆ.
2. unittest.makeSuite(TestMathFunctions) ಬಳಸಿ TestMathFunctions ಕ್ಲಾಸ್ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಟೆಸ್ಟ್ಗಳನ್ನು (test_* ಮೆಥಡ್ಗಳು) ಸ್ಯೂಟ್ಗೆ ಸೇರಿಸಲಾಗಿದೆ.
3. HtmlTestRunner.HTMLTestRunner ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ರಚಿಸಲಾಗಿದೆ.
* output='reports': ರಿಪೋರ್ಟ್ಗಳನ್ನು reports ಎಂಬ ಫೋಲ್ಡರ್ನಲ್ಲಿ ಸೇವ್ ಮಾಡುತ್ತದೆ.
* report_title: ರಿಪೋರ್ಟ್ನ ಶೀರ್ಷಿಕೆ.
* descriptions: ರಿಪೋರ್ಟ್ನ ವಿವರಣೆ.
4. runner.run(suite) ಬಳಸಿ ಟೆಸ್ಟ್ಗಳನ್ನು ಚಲಾಯಿಸಲಾಗುತ್ತದೆ.
ಹಂತ 3: ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಚಲಾಯಿಸುವುದು ಟರ್ಮಿನಲ್ನಲ್ಲಿ ಈ ಕಮಾಂಡ್ ಚಲಾಯಿಸಿ:
ಫಲಿತಾಂಶ:
ಈ ಕಮಾಂಡ್ ಚಲಾಯಿಸಿದ ನಂತರ, ನಿಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ reports ಎಂಬ ಹೊಸ ಫೋಲ್ಡರ್ ರಚನೆಯಾಗುತ್ತದೆ. ಅದರೊಳಗೆ, TestMathFunctions_YYYY-MM-DD_HH-MM-SS.html ಎಂಬ ಹೆಸರಿನ HTML ಫೈಲ್ ಇರುತ್ತದೆ.
HTML ರಿಪೋರ್ಟ್ ಅನ್ನು ಪರಿಶೀಲಿಸುವುದು
ಆ HTML ಫೈಲ್ ಅನ್ನು ವೆಬ್ ಬ್ರೌಸರ್ನಲ್ಲಿ ತೆರೆದಾಗ, ನೀವು ಈ ಕೆಳಗಿನ ವಿವರಗಳನ್ನು ನೋಡಬಹುದು:
- ಸಾರಾಂಶ (Summary): ಒಟ್ಟು ಎಷ್ಟು ಟೆಸ್ಟ್ಗಳು ಚಲಾಯಿಸಲ್ಪಟ್ಟವು, ಎಷ್ಟು ಪಾಸ್ ಆದವು, ಎಷ್ಟು ಫೇಲ್ ಆದವು, ಮತ್ತು ಎಷ್ಟು ಸ್ಕಿಪ್ ಆದವು ಎಂಬ ಮಾಹಿತಿ.
- ವಿವರವಾದ ಪಟ್ಟಿ: ಪ್ರತಿ ಟೆಸ್ಟ್ನ ಹೆಸರು, ಅದರ ಸ್ಥಿತಿ (Pass/Fail/Skip), ಮತ್ತು ಅದು ಚಲಾಯಿಸಲು ತೆಗೆದುಕೊಂಡ ಸಮಯ.
- ದೋಷಗಳ ವಿವರ: ಫೇಲ್ ಆದ ಟೆಸ್ಟ್ಗಳಿಗಾಗಿ, ಯಾವ ಅಸರ್ಷನ್ ವಿಫಲವಾಯಿತು ಮತ್ತು ಅದರ ಟ್ರೇಸ್ಬ್ಯಾಕ್ (traceback) ವಿವರಗಳು ಸ್ಪಷ್ಟವಾಗಿ ಕಾಣಿಸುತ್ತವೆ.
- ಸುಂದರವಾದ ಗ್ರಾಫಿಕಲ್ ಇಂಟರ್ಫೇಸ್: ಫಲಿತಾಂಶಗಳನ್ನು ಸುಲಭವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಪೈ ಚಾರ್ಟ್ಗಳು ಮತ್ತು ಬಣ್ಣ-ಕೋಡೆಡ್ ಟೇಬಲ್ಗಳು ಇರುತ್ತವೆ.
ಈ ರೀತಿಯ ರಿಪೋರ್ಟ್ಗಳು ಡೆವಲಪರ್ಗಳಿಗೆ, ಟೆಸ್ಟರ್ಗಳಿಗೆ ಮತ್ತು ಮ್ಯಾನೇಜರ್ಗಳಿಗೆ ಪ್ರಾಜೆಕ್ಟ್ನ ಗುಣಮಟ್ಟವನ್ನು ಸುಲಭವಾಗಿ ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ.