Convert Unit tests to use py.test format

This commit is contained in:
Mike Terzo
2016-12-22 23:50:48 -05:00
parent 333347d113
commit 7302dbecec
5 changed files with 209 additions and 223 deletions

View File

@@ -4,6 +4,7 @@ mock==1.3.0
pytest==3.0.1 pytest==3.0.1
pytest-pep8==1.0.5 pytest-pep8==1.0.5
pytest-cov==2.2.1 pytest-cov==2.2.1
pytest-mock==1.5.0
cov-core==1.15.0 cov-core==1.15.0
unittest2==1.1.0; python_version < '2.7' unittest2==1.1.0; python_version < '2.7'
bandit bandit

0
test/__init__.py Normal file
View File

View File

@@ -1,19 +1,8 @@
import os import pytest
from puppetboard import app
import unittest
import tempfile import tempfile
from puppetboard import app
class AppTestCase(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def test_first_test(self):
self.assertTrue(True)
if __name__ == '__main__': def test_first_test():
unittest.main() assert app is not None, ("%s" % reg.app)

View File

@@ -1,7 +1,7 @@
import pytest
import os import os
from puppetboard import docker_settings from puppetboard import docker_settings
import unittest
import tempfile
try: try:
import future.utils import future.utils
except: except:
@@ -13,8 +13,8 @@ except:
pass pass
class DockerTestCase(unittest.TestCase): @pytest.fixture(scope='function')
def setUp(self): def cleanUpEnv(request):
for env_var in dir(docker_settings): for env_var in dir(docker_settings):
if (env_var.startswith('__') or env_var.startswith('_') or if (env_var.startswith('__') or env_var.startswith('_') or
env_var.islower()): env_var.islower()):
@@ -23,70 +23,77 @@ class DockerTestCase(unittest.TestCase):
if env_var in os.environ: if env_var in os.environ:
del os.environ[env_var] del os.environ[env_var]
reload(docker_settings) reload(docker_settings)
return
def test_default_host_port(self):
self.assertEqual(docker_settings.PUPPETDB_HOST, 'puppetdb')
self.assertEqual(docker_settings.PUPPETDB_PORT, 8080)
def test_set_host_port(self): def test_default_host_port(cleanUpEnv):
os.environ['PUPPETDB_HOST'] = 'puppetdb' assert docker_settings.PUPPETDB_HOST == 'puppetdb'
assert docker_settings.PUPPETDB_PORT == 8080
def test_set_host_port(cleanUpEnv):
os.environ['PUPPETDB_HOST'] = 'puppetdb2'
os.environ['PUPPETDB_PORT'] = '9081' os.environ['PUPPETDB_PORT'] = '9081'
reload(docker_settings) reload(docker_settings)
self.assertEqual(docker_settings.PUPPETDB_HOST, 'puppetdb') assert docker_settings.PUPPETDB_HOST == 'puppetdb2'
self.assertEqual(docker_settings.PUPPETDB_PORT, 9081) assert docker_settings.PUPPETDB_PORT == 9081
def test_cert_true_test(self):
def test_cert_true_test(cleanUpEnv):
os.environ['PUPPETDB_SSL_VERIFY'] = 'True' os.environ['PUPPETDB_SSL_VERIFY'] = 'True'
reload(docker_settings) reload(docker_settings)
self.assertTrue(docker_settings.PUPPETDB_SSL_VERIFY) assert docker_settings.PUPPETDB_SSL_VERIFY is True
os.environ['PUPPETDB_SSL_VERIFY'] = 'true' os.environ['PUPPETDB_SSL_VERIFY'] = 'true'
reload(docker_settings) reload(docker_settings)
self.assertTrue(docker_settings.PUPPETDB_SSL_VERIFY) assert docker_settings.PUPPETDB_SSL_VERIFY is True
def test_cert_false_test(self):
def test_cert_false_test(cleanUpEnv):
os.environ['PUPPETDB_SSL_VERIFY'] = 'False' os.environ['PUPPETDB_SSL_VERIFY'] = 'False'
reload(docker_settings) reload(docker_settings)
self.assertFalse(docker_settings.PUPPETDB_SSL_VERIFY) assert docker_settings.PUPPETDB_SSL_VERIFY is False
os.environ['PUPPETDB_SSL_VERIFY'] = 'false' os.environ['PUPPETDB_SSL_VERIFY'] = 'false'
reload(docker_settings) reload(docker_settings)
self.assertFalse(docker_settings.PUPPETDB_SSL_VERIFY) assert docker_settings.PUPPETDB_SSL_VERIFY is False
def test_cert_path(self):
def test_cert_path(cleanUpEnv):
ca_file = '/usr/ssl/path/ca.pem' ca_file = '/usr/ssl/path/ca.pem'
os.environ['PUPPETDB_SSL_VERIFY'] = ca_file os.environ['PUPPETDB_SSL_VERIFY'] = ca_file
reload(docker_settings) reload(docker_settings)
self.assertEqual(docker_settings.PUPPETDB_SSL_VERIFY, ca_file) assert docker_settings.PUPPETDB_SSL_VERIFY == ca_file
def validate_facts(self, facts):
self.assertEqual(type(facts), type([])) def validate_facts(facts):
self.assertTrue(len(facts) > 0) assert isinstance(facts, list)
assert len(facts) > 0
for map in facts: for map in facts:
self.assertEqual(type(map), type(())) assert isinstance(map, tuple)
self.assertTrue(len(map) == 2) assert len(map) == 2
def test_inventory_facts_default(self):
self.validate_facts(docker_settings.INVENTORY_FACTS)
def test_invtory_facts_custom(self): def test_inventory_facts_default(cleanUpEnv):
validate_facts(docker_settings.INVENTORY_FACTS)
def test_invtory_facts_custom(cleanUpEnv):
os.environ['INVENTORY_FACTS'] = "A, B, C, D" os.environ['INVENTORY_FACTS'] = "A, B, C, D"
reload(docker_settings) reload(docker_settings)
self.validate_facts(docker_settings.INVENTORY_FACTS) validate_facts(docker_settings.INVENTORY_FACTS)
def test_graph_facts_defautl(self):
def test_graph_facts_defautl(cleanUpEnv):
facts = docker_settings.GRAPH_FACTS facts = docker_settings.GRAPH_FACTS
self.assertEqual(type(facts), type([])) assert isinstance(facts, list)
self.assertTrue('puppetversion' in facts) assert 'puppetversion' in facts
def test_graph_facts_custom(self):
def test_graph_facts_custom(cleanUpEnv):
os.environ['GRAPH_FACTS'] = "architecture, puppetversion, extra" os.environ['GRAPH_FACTS'] = "architecture, puppetversion, extra"
reload(docker_settings) reload(docker_settings)
facts = docker_settings.GRAPH_FACTS facts = docker_settings.GRAPH_FACTS
self.assertEqual(type(facts), type([])) assert isinstance(facts, list)
self.assertEqual(len(facts), 3) assert len(facts) == 3
self.assertTrue('puppetversion' in facts) assert 'puppetversion' in facts
self.assertTrue('architecture' in facts) assert 'architecture' in facts
self.assertTrue('extra' in facts) assert 'extra' in facts
if __name__ == '__main__':
unittest.main()

View File

@@ -1,8 +1,4 @@
try: import pytest
import unittest2 as unittest
except ImportError:
import unittest
import sys import sys
import json import json
import mock import mock
@@ -22,52 +18,48 @@ from puppetboard.app import NoContent
import logging import logging
class UtilsTestCase(unittest.TestCase): def test_json_format():
def setUp(self):
pass
def teadDown(self):
pass
def test_json_format(self):
demo = [{'foo': 'bar'}, {'bar': 'foo'}] demo = [{'foo': 'bar'}, {'bar': 'foo'}]
sample = json.dumps(demo, indent=2, separators=(',', ': ')) sample = json.dumps(demo, indent=2, separators=(',', ': '))
self.assertEqual(sample, utils.jsonprint(demo), assert sample == utils.jsonprint(demo), "Json formatting has changed"
"Json formatting has changed")
def test_format_val_str(self):
def test_format_val_str():
x = "some string" x = "some string"
self.assertEqual(x, utils.formatvalue(x), assert x == utils.formatvalue(x), "Should return same value"
"Should return same value")
def test_format_val_array(self):
def test_format_val_array():
x = ['a', 'b', 'c'] x = ['a', 'b', 'c']
self.assertEqual("a, b, c", utils.formatvalue(x), assert "a, b, c" == utils.formatvalue(x)
"Should return comma seperated string")
def test_format_val_dict_one_layer(self):
def test_format_val_dict_one_layer():
x = {'a': 'b'} x = {'a': 'b'}
self.assertEqual("a => b,<br/>", utils.formatvalue(x), assert "a => b,<br/>" == utils.formatvalue(x)
"Should return stringified value")
def test_format_val_tuple(self):
def test_format_val_tuple():
x = ('a', 'b') x = ('a', 'b')
self.assertEqual(str(x), utils.formatvalue(x)) assert str(x) == utils.formatvalue(x)
@mock.patch('logging.log') def test_get():
class GetOrAbortTesting(unittest.TestCase):
def test_get(self, mock_log):
x = "hello world" x = "hello world"
def test_get_or_abort(): def test_get_or_abort():
return x return x
self.assertEqual(x, utils.get_or_abort(test_get_or_abort)) assert x == utils.get_or_abort(test_get_or_abort)
def test_http_error(self, mock_log):
@pytest.fixture
def mock_log(mocker):
return mocker.patch('logging.log')
def test_http_error(mock_log):
err = "NotFound" err = "NotFound"
def raise_http_error(): def raise_http_error():
@@ -76,11 +68,12 @@ class GetOrAbortTesting(unittest.TestCase):
x.reason = err x.reason = err
raise HTTPError(err, response=x) raise HTTPError(err, response=x)
with self.assertRaises(NotFound) as error: with pytest.raises(NotFound):
utils.get_or_abort(raise_http_error) utils.get_or_abort(raise_http_error)
mock_log.error.assert_called_with(err) mock_log.error.assert_called_once_with(err)
def test_http_connection_error(self, mock_log):
def test_http_connection_error(mock_log):
err = "ConnectionError" err = "ConnectionError"
def connection_error(): def connection_error():
@@ -89,26 +82,25 @@ class GetOrAbortTesting(unittest.TestCase):
x.reason = err x.reason = err
raise ConnectionError(err, response=x) raise ConnectionError(err, response=x)
with self.assertRaises(InternalServerError) as error: with pytest.raises(InternalServerError):
utils.get_or_abort(connection_error) utils.get_or_abort(connection_error)
mock_log.error.assert_called_with(err) mock_log.error.assert_called_with(err)
@mock.patch('flask.abort')
def test_http_empty(self, mock_log, flask_abort): def test_http_empty(mock_log, mocker):
err = "Empty Response" err = "Empty Response"
def connection_error(): def connection_error():
raise EmptyResponseError(err) raise EmptyResponseError(err)
with self.assertRaises(NoContent) as error: flask_abort = mocker.patch('flask.abort')
with pytest.raises(NoContent):
utils.get_or_abort(connection_error) utils.get_or_abort(connection_error)
mock_log.error.assert_called_with(err) mock_log.error.assert_called_with(err)
flask_abort.assert_called_with('204') flask_abort.assert_called_with('204')
class yieldOrStop(unittest.TestCase): def test_iter():
def test_iter(self):
test_list = (0, 1, 2, 3) test_list = (0, 1, 2, 3)
def my_generator(): def my_generator():
@@ -116,14 +108,15 @@ class yieldOrStop(unittest.TestCase):
yield i yield i
gen = utils.yield_or_stop(my_generator()) gen = utils.yield_or_stop(my_generator())
self.assertIsInstance(gen, GeneratorType) assert isinstance(gen, GeneratorType)
i = 0 i = 0
for val in gen: for val in gen:
self.assertEqual(i, val) assert i == val
i = i + 1 i = i + 1
def test_stop_empty(self):
def test_stop_empty():
def my_generator(): def my_generator():
yield 1 yield 1
raise EmptyResponseError raise EmptyResponseError
@@ -131,28 +124,24 @@ class yieldOrStop(unittest.TestCase):
gen = utils.yield_or_stop(my_generator()) gen = utils.yield_or_stop(my_generator())
for val in gen: for val in gen:
self.assertEqual(1, val) assert 1 == val
def test_stop_conn_error(self):
def test_stop_conn_error():
def my_generator(): def my_generator():
yield 1 yield 1
raise ConnectionError raise ConnectionError
yield 2 yield 2
gen = utils.yield_or_stop(my_generator()) gen = utils.yield_or_stop(my_generator())
for val in gen: for val in gen:
self.assertEqual(1, val) assert 1 == val
def test_stop_http_error(self):
def test_stop_http_error():
def my_generator(): def my_generator():
yield 1 yield 1
raise HTTPError raise HTTPError
yield 2 yield 2
gen = utils.yield_or_stop(my_generator()) gen = utils.yield_or_stop(my_generator())
for val in gen: for val in gen:
self.assertEqual(1, val) assert 1 == val
if __name__ == '__main__':
unittest.main()