Convert Unit tests to use py.test format
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user