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

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