Add unit tests and fixes for increment_counts
This commit adds unit tests for the increment_counts function. In the process of writing them several bugs in the function were fixed too.
This commit is contained in:
parent
963f980ae0
commit
9dbaabf463
@ -69,12 +69,12 @@ def running_avg(test, values, result):
|
|||||||
return values
|
return values
|
||||||
|
|
||||||
|
|
||||||
def increment_counts(run, test, results, session):
|
def increment_counts(test, results):
|
||||||
test_values = {'run_count': test.run_count + 1}
|
test_values = {'run_count': test.run_count + 1}
|
||||||
status = results.get('status')
|
status = results.get('status')
|
||||||
run = api.get_run_by_id(run.id, session)
|
|
||||||
if status == 'success':
|
if status == 'success':
|
||||||
test_values['success'] = test.success + 1
|
test_values['success'] = test.success + 1
|
||||||
|
test_values = running_avg(test, test_values, results)
|
||||||
elif status == 'fail':
|
elif status == 'fail':
|
||||||
test_values['failure'] = test.failure + 1
|
test_values['failure'] = test.failure + 1
|
||||||
elif status == 'skip':
|
elif status == 'skip':
|
||||||
@ -82,7 +82,6 @@ def increment_counts(run, test, results, session):
|
|||||||
else:
|
else:
|
||||||
msg = "Unknown test status %s" % status
|
msg = "Unknown test status %s" % status
|
||||||
raise exceptions.UnknownStatus(msg)
|
raise exceptions.UnknownStatus(msg)
|
||||||
test_values = running_avg(test, test_values, results)
|
|
||||||
return test_values
|
return test_values
|
||||||
|
|
||||||
|
|
||||||
@ -125,8 +124,7 @@ def process_results(results):
|
|||||||
fails, run_time,
|
fails, run_time,
|
||||||
session)
|
session)
|
||||||
else:
|
else:
|
||||||
test_values = increment_counts(db_run, db_test, results[test],
|
test_values = increment_counts(db_test, results[test])
|
||||||
session)
|
|
||||||
# If skipped nothing to update
|
# If skipped nothing to update
|
||||||
if test_values:
|
if test_values:
|
||||||
api.update_test(test_values, db_test.id, session)
|
api.update_test(test_values, db_test.id, session)
|
||||||
|
@ -17,6 +17,7 @@ import datetime
|
|||||||
|
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
|
from subunit2sql import exceptions
|
||||||
from subunit2sql import shell
|
from subunit2sql import shell
|
||||||
from subunit2sql.tests import base
|
from subunit2sql.tests import base
|
||||||
|
|
||||||
@ -68,3 +69,64 @@ class TestShell(base.TestCase):
|
|||||||
result = shell.running_avg(fake_test, fake_values, fake_result)
|
result = shell.running_avg(fake_test, fake_values, fake_result)
|
||||||
expected_avg = 50
|
expected_avg = 50
|
||||||
self.assertEqual(expected_avg, result['run_time'])
|
self.assertEqual(expected_avg, result['run_time'])
|
||||||
|
|
||||||
|
def test_increment_counts_success(self):
|
||||||
|
fake_test = mock.MagicMock()
|
||||||
|
fake_test.run_count = 15
|
||||||
|
fake_test.success = 5
|
||||||
|
fake_test.run_time = 45.0
|
||||||
|
fake_result = {
|
||||||
|
'status': 'success',
|
||||||
|
'start_time': datetime.datetime(1914, 6, 28, 10, 45, 0),
|
||||||
|
'end_time': datetime.datetime(1914, 6, 28, 10, 45, 50),
|
||||||
|
}
|
||||||
|
values = shell.increment_counts(fake_test, fake_result)
|
||||||
|
# Check to ensure counts incrememented properly
|
||||||
|
self.assertEqual(values['run_count'], 16)
|
||||||
|
self.assertEqual(values['success'], 6)
|
||||||
|
# Ensure run_time is updated on success
|
||||||
|
expected_avg = ((5 * 45.0) + 50) / 6
|
||||||
|
self.assertEqual(values['run_time'], expected_avg)
|
||||||
|
|
||||||
|
def test_increment_counts_failure(self):
|
||||||
|
fake_test = mock.MagicMock()
|
||||||
|
fake_test.run_count = 15
|
||||||
|
fake_test.success = 5
|
||||||
|
fake_test.failure = 10
|
||||||
|
fake_test.run_time = 45.0
|
||||||
|
fake_result = {
|
||||||
|
'status': 'fail',
|
||||||
|
'start_time': datetime.datetime(1914, 6, 28, 10, 45, 0),
|
||||||
|
'end_time': datetime.datetime(1914, 6, 28, 10, 45, 50),
|
||||||
|
}
|
||||||
|
values = shell.increment_counts(fake_test, fake_result)
|
||||||
|
# Check to ensure counts incrememented properly
|
||||||
|
self.assertEqual(values['run_count'], 16)
|
||||||
|
self.assertEqual(values['failure'], 11)
|
||||||
|
# Avg runtime should only be updated on success
|
||||||
|
self.assertNotIn('run_time', values)
|
||||||
|
|
||||||
|
def test_increment_counts_skip(self):
|
||||||
|
fake_test = mock.MagicMock()
|
||||||
|
fake_test.run_count = 15
|
||||||
|
fake_test.success = 5
|
||||||
|
fake_test.failure = 10
|
||||||
|
fake_test.run_time = 45.0
|
||||||
|
fake_result = {
|
||||||
|
'status': 'skip',
|
||||||
|
'start_time': datetime.datetime(1914, 6, 28, 10, 45, 0),
|
||||||
|
'end_time': datetime.datetime(1914, 6, 28, 10, 45, 2),
|
||||||
|
}
|
||||||
|
values = shell.increment_counts(fake_test, fake_result)
|
||||||
|
# No test counts incrememented with a skip
|
||||||
|
self.assertEqual(values, {})
|
||||||
|
|
||||||
|
def test_increment_counts_unknown_status(self):
|
||||||
|
fake_test = mock.MagicMock()
|
||||||
|
fake_result = {
|
||||||
|
'status': 'explody',
|
||||||
|
'start_time': datetime.datetime(1914, 6, 28, 10, 45, 0),
|
||||||
|
'end_time': datetime.datetime(1914, 6, 28, 10, 45, 2),
|
||||||
|
}
|
||||||
|
self.assertRaises(exceptions.UnknownStatus,
|
||||||
|
shell.increment_counts, fake_test, fake_result)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user