import logging
import os
import subprocess
import time
import tempfile
import unittest
class LineTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
logging_level = logging.DEBUG
logging.basicConfig(level=logging_level, format='%(asctime)s %(levelname)s %(message)s',
filename=os.path.basename(__file__) + '.log', filemode='a')
def setUp(self):
logging.info('running test: {}'.format(self.id()))
def test_menu(self):
self.shell_match(self.BASE_CLI + 'foobar', ['Invalid namespace: foobar', 'Error'])
self.file_match('/tmp/foobar', 'barfoo')
# HELPERS
def shell_match(self, command='/bin/true', phrases=None):
if isinstance(phrases, basestring):
# convert a string to a list item
phrases = [phrases,]
paragraph = subprocess.check_output('{} || true'.format(command), shell=True, stderr=subprocess.STDOUT)
for phrase in phrases:
self.assertIn(phrase, paragraph)
def file_match(self, flat_file='/tmp/last_script', phrases=None):
if isinstance(phrases, basestring):
# convert a string to a list item
phrases = [phrases,]
text = open(flat_file).read()
for item in phrases:
self.assertIn(item, text)
- - -
/usr/bin/python2.7 /home/ubuntu/Desktop/repos/web/tests/sign_up_test.py myargument
Traceback (most recent call last):
File "/home/ubuntu/Desktop/repos/web/tests/sign_up_test.py", line 95, in <module>
unittest.main( )
File "/usr/lib/python2.7/unittest/main.py", line 94, in __init__
self.parseArgs(argv)
File "/usr/lib/python2.7/unittest/main.py", line 149, in parseArgs
self.createTests()
File "/usr/lib/python2.7/unittest/main.py", line 158, in createTests
self.module)
File "/usr/lib/python2.7/unittest/loader.py", line 128, in loadTestsFromNames
suites = [self.loadTestsFromName(name, module) for name in names]
File "/usr/lib/python2.7/unittest/loader.py", line 100, in loadTestsFromName
parent, obj = obj, getattr(obj, part)
AttributeError: 'module' object has no attribute 'myargument'
simple hack fix:
if __name__ == '__main__':
if len(sys.argv) != 2:
sys.exit( "ERROR: please provide a command line parameter" )
parameter = sys.argv[ 1 ] # defined in main, available to all objects/tests
del sys.argv[ 1: ] # since sys.argv[0] is the module name, remove everything after
unittest.main()