Skip to content

Instantly share code, notes, and snippets.

@japboy
Created September 10, 2011 02:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save japboy/1207866 to your computer and use it in GitHub Desktop.
Save japboy/1207866 to your computer and use it in GitHub Desktop.
Basic TDD style unit testing with PyUnit
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Testee module
This script just writes 'Hello, world.' in your language. This is my study case
of unit testing for test-driven development.
"""
import locale
__author__ = 'Yu I.'
__license__ = 'Public domain'
__version__ = '0.1'
messages = {'en': 'Hello, world.',
'es': '¡Hola, mundo.',
'ja': 'こんにちは、世界。'}
def get_language():
"""Return default language code like 'en'"""
defaultlocale = locale.getdefaultlocale()
language = defaultlocale[0][0:2]
return language
def get_message():
"""Return localized message"""
language = get_language()
if not messages.has_key(language):
language = 'en'
return messages[language]
if __name__ == '__main__':
print get_message()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Tester module
This script just writes 'Hello, world.' in your language. This is my study case
of unit testing for test-driven development.
"""
import locale
import unittest
import testee
__author__ = 'Yu I.'
__license__ = 'Public domain'
__version__ = '0.1'
class LanguageDetectorTestCase(unittest.TestCase):
"""Detect language"""
def test_get_language(self):
"""Return default language code like 'en'"""
defaultlocale = locale.getdefaultlocale()
language = defaultlocale[0][0:2]
self.assertTrue(isinstance(language, str),
'Value should be string')
self.assertEqual(len(language),
2,
'Value should be alphabetical 2 letters')
class MessageWriterTestCase(unittest.TestCase):
"""Write message"""
def setUp(self):
self.messages = {'es': 'Hello, world.',
'es': '¡Hola, mundo.',
'ja': 'こんにちは、世界。'}
def test_get_message(self):
"""Return localized message"""
language = testee.get_language()
if not self.messages.has_key(language):
language = 'ja'
self.assertTrue(isinstance(self.messages[language], str),
'Value should be string')
def suite():
"""Create Test Suite"""
testsuite = unittest.TestSuite()
testsuite.addTest(LanguageDetectorTestCase('test_get_language'))
testsuite.addTest(MessageWriterTestCase('test_get_message'))
return testsuite
if __name__ == '__main__':
# Run Test Runner
unittest.TextTestRunner(verbosity=2).run(suite())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment