replaced unittest assertions pytest assertions (#26564)

This commit is contained in:
Aarif
2021-02-19 16:04:32 +05:00
committed by GitHub
parent 7d5f9b2016
commit ba16e05899
22 changed files with 626 additions and 795 deletions

View File

@@ -65,9 +65,9 @@ class TestNotifyCredentials(TestCase):
@mock.patch(COMMAND_MODULE + '.Command.send_notifications')
def test_course_args(self, mock_send):
call_command(Command(), '--course', 'course-v1:edX+Test+1', 'course-v1:edX+Test+2')
self.assertTrue(mock_send.called)
self.assertEqual(list(mock_send.call_args[0][0]), [self.cert1, self.cert2])
self.assertEqual(list(mock_send.call_args[0][1]), [self.grade1, self.grade2])
assert mock_send.called
assert list(mock_send.call_args[0][0]) == [self.cert1, self.cert2]
assert list(mock_send.call_args[0][1]) == [self.grade1, self.grade2]
@freeze_time(datetime(2017, 5, 1, 4))
@mock.patch(COMMAND_MODULE + '.Command.send_notifications')
@@ -91,35 +91,35 @@ class TestNotifyCredentials(TestCase):
call_command(Command(), '--auto')
self.assertTrue(mock_send.called)
assert mock_send.called
self.assertListEqual(list(mock_send.call_args[0][0]), [cert1, cert2])
self.assertListEqual(list(mock_send.call_args[0][1]), [grade1, grade2])
self.assertLessEqual(len(list(mock_send.call_args[0][0])), len(total_certificates))
self.assertLessEqual(len(list(mock_send.call_args[0][1])), len(total_grades))
assert len(list(mock_send.call_args[0][0])) <= len(total_certificates)
assert len(list(mock_send.call_args[0][1])) <= len(total_grades)
@mock.patch(COMMAND_MODULE + '.Command.send_notifications')
def test_date_args(self, mock_send):
call_command(Command(), '--start-date', '2017-01-31')
self.assertTrue(mock_send.called)
assert mock_send.called
self.assertListEqual(list(mock_send.call_args[0][0]), [self.cert2, self.cert4, self.cert3])
self.assertListEqual(list(mock_send.call_args[0][1]), [self.grade2, self.grade4, self.grade3])
mock_send.reset_mock()
call_command(Command(), '--start-date', '2017-02-01', '--end-date', '2017-02-02')
self.assertTrue(mock_send.called)
assert mock_send.called
self.assertListEqual(list(mock_send.call_args[0][0]), [self.cert2, self.cert4])
self.assertListEqual(list(mock_send.call_args[0][1]), [self.grade2, self.grade4])
mock_send.reset_mock()
call_command(Command(), '--end-date', '2017-02-02')
self.assertTrue(mock_send.called)
assert mock_send.called
self.assertListEqual(list(mock_send.call_args[0][0]), [self.cert1, self.cert2, self.cert4])
self.assertListEqual(list(mock_send.call_args[0][1]), [self.grade1, self.grade2, self.grade4])
mock_send.reset_mock()
call_command(Command(), '--start-date', "2017-02-01 00:00:00", '--end-date', '2017-02-01 04:00:00')
self.assertTrue(mock_send.called)
assert mock_send.called
self.assertListEqual(list(mock_send.call_args[0][0]), [self.cert2])
self.assertListEqual(list(mock_send.call_args[0][1]), [self.grade2])
@@ -128,7 +128,7 @@ class TestNotifyCredentials(TestCase):
call_command(
Command(), '--start-date', '2017-02-01', '--end-date', '2017-02-02', '--usernames', self.user2.username
)
self.assertTrue(mock_send.called)
assert mock_send.called
self.assertListEqual(list(mock_send.call_args[0][0]), [self.cert4])
self.assertListEqual(list(mock_send.call_args[0][1]), [self.grade4])
mock_send.reset_mock()
@@ -136,7 +136,7 @@ class TestNotifyCredentials(TestCase):
call_command(
Command(), '--usernames', self.user2.username
)
self.assertTrue(mock_send.called)
assert mock_send.called
self.assertListEqual(list(mock_send.call_args[0][0]), [self.cert4])
self.assertListEqual(list(mock_send.call_args[0][1]), [self.grade4])
mock_send.reset_mock()
@@ -144,7 +144,7 @@ class TestNotifyCredentials(TestCase):
call_command(
Command(), '--start-date', '2017-02-01', '--end-date', '2017-02-02', '--usernames', self.user.username
)
self.assertTrue(mock_send.called)
assert mock_send.called
self.assertListEqual(list(mock_send.call_args[0][0]), [self.cert2])
self.assertListEqual(list(mock_send.call_args[0][1]), [self.grade2])
mock_send.reset_mock()
@@ -152,7 +152,7 @@ class TestNotifyCredentials(TestCase):
call_command(
Command(), '--usernames', self.user.username
)
self.assertTrue(mock_send.called)
assert mock_send.called
self.assertListEqual(list(mock_send.call_args[0][0]), [self.cert1, self.cert2, self.cert3])
self.assertListEqual(list(mock_send.call_args[0][1]), [self.grade1, self.grade2, self.grade3])
mock_send.reset_mock()
@@ -160,7 +160,7 @@ class TestNotifyCredentials(TestCase):
call_command(
Command(), '--usernames', self.user.username, self.user2.username
)
self.assertTrue(mock_send.called)
assert mock_send.called
self.assertListEqual(list(mock_send.call_args[0][0]), [self.cert1, self.cert2, self.cert4, self.cert3])
self.assertListEqual(list(mock_send.call_args[0][1]), [self.grade1, self.grade2, self.grade4, self.grade3])
mock_send.reset_mock()
@@ -169,39 +169,40 @@ class TestNotifyCredentials(TestCase):
def test_no_args(self, mock_send):
with self.assertRaisesRegex(CommandError, 'You must specify a filter.*'):
call_command(Command())
self.assertFalse(mock_send.called)
assert not mock_send.called
@mock.patch(COMMAND_MODULE + '.Command.send_notifications')
def test_dry_run(self, mock_send):
call_command(Command(), '--dry-run', '--start-date', '2017-02-01')
self.assertFalse(mock_send.called)
assert not mock_send.called
@mock.patch(COMMAND_MODULE + '.handle_course_cert_awarded')
@mock.patch(COMMAND_MODULE + '.send_grade_if_interesting')
@mock.patch(COMMAND_MODULE + '.handle_course_cert_changed')
def test_hand_off(self, mock_grade_interesting, mock_program_changed, mock_program_awarded):
call_command(Command(), '--start-date', '2017-02-01')
self.assertEqual(mock_grade_interesting.call_count, 3)
self.assertEqual(mock_program_changed.call_count, 3)
self.assertEqual(mock_program_awarded.call_count, 0)
assert mock_grade_interesting.call_count == 3
assert mock_program_changed.call_count == 3
assert mock_program_awarded.call_count == 0
mock_grade_interesting.reset_mock()
mock_program_changed.reset_mock()
mock_program_awarded.reset_mock()
call_command(Command(), '--start-date', '2017-02-01', '--notify_programs')
self.assertEqual(mock_grade_interesting.call_count, 3)
self.assertEqual(mock_program_changed.call_count, 3)
self.assertEqual(mock_program_awarded.call_count, 1)
assert mock_grade_interesting.call_count == 3
assert mock_program_changed.call_count == 3
assert mock_program_awarded.call_count == 1
@mock.patch(COMMAND_MODULE + '.time')
def test_delay(self, mock_time):
call_command(Command(), '--start-date', '2017-01-01', '--page-size=2')
self.assertEqual(mock_time.sleep.call_count, 0)
assert mock_time.sleep.call_count == 0
mock_time.sleep.reset_mock()
call_command(Command(), '--start-date', '2017-01-01', '--page-size=2', '--delay', '0.2')
self.assertEqual(mock_time.sleep.call_count, 2) # Between each page, twice (2 pages, for certs and grades)
self.assertEqual(mock_time.sleep.call_args[0][0], 0.2)
assert mock_time.sleep.call_count == 2
# Between each page, twice (2 pages, for certs and grades)
assert mock_time.sleep.call_args[0][0] == 0.2
@override_settings(DEBUG=True)
def test_page_size(self):
@@ -211,11 +212,13 @@ class TestNotifyCredentials(TestCase):
reset_queries()
call_command(Command(), '--start-date', '2017-01-01', '--page-size=1')
self.assertEqual(len(connection.queries), baseline + 6) # two extra page queries each for certs & grades
assert len(connection.queries) == (baseline + 6)
# two extra page queries each for certs & grades
reset_queries()
call_command(Command(), '--start-date', '2017-01-01', '--page-size=2')
self.assertEqual(len(connection.queries), baseline + 2) # one extra page query each for certs & grades
assert len(connection.queries) == (baseline + 2)
# one extra page query each for certs & grades
@mock.patch(COMMAND_MODULE + '.send_grade_if_interesting')
def test_site(self, mock_grade_interesting):
@@ -224,7 +227,7 @@ class TestNotifyCredentials(TestCase):
)
call_command(Command(), '--site', site_config.site.domain, '--start-date', '2017-01-01')
self.assertEqual(mock_grade_interesting.call_count, 1)
assert mock_grade_interesting.call_count == 1
@mock.patch(COMMAND_MODULE + '.Command.send_notifications')
def test_args_from_database(self, mock_send):
@@ -240,11 +243,12 @@ class TestNotifyCredentials(TestCase):
# Not told to use config, should ignore it
call_command(Command(), '--start-date', '2017-01-01')
self.assertEqual(len(mock_send.call_args[0][0]), 4) # Number of certs expected
assert len(mock_send.call_args[0][0]) == 4
# Number of certs expected
# Told to use it, and enabled. Should use config in preference of command line
call_command(Command(), '--start-date', '2017-01-01', '--args-from-database')
self.assertEqual(len(mock_send.call_args[0][0]), 1)
assert len(mock_send.call_args[0][0]) == 1
config.enabled = False
config.save()

View File

@@ -24,16 +24,16 @@ class TestCredentialsApiConfig(CredentialsApiConfigMixin, TestCase):
credentials_config = self.create_credentials_config()
expected = '{root}/api/{version}/'.format(root=CREDENTIALS_INTERNAL_SERVICE_URL.strip('/'), version=API_VERSION)
self.assertEqual(credentials_config.get_internal_api_url_for_org('nope'), expected)
assert credentials_config.get_internal_api_url_for_org('nope') == expected
expected = '{root}/api/{version}/'.format(root=CREDENTIALS_INTERNAL_SERVICE_URL.strip('/'), version=API_VERSION)
self.assertEqual(credentials_config.internal_api_url, expected)
assert credentials_config.internal_api_url == expected
expected = '{root}/api/{version}/'.format(root=CREDENTIALS_INTERNAL_SERVICE_URL.strip('/'), version=API_VERSION)
self.assertEqual(credentials_config.get_internal_api_url_for_org('nope'), expected)
assert credentials_config.get_internal_api_url_for_org('nope') == expected
expected = '{root}/api/{version}/'.format(root=CREDENTIALS_PUBLIC_SERVICE_URL.strip('/'), version=API_VERSION)
self.assertEqual(credentials_config.public_api_url, expected)
assert credentials_config.public_api_url == expected
def test_is_learner_issuance_enabled(self):
"""
@@ -41,10 +41,10 @@ class TestCredentialsApiConfig(CredentialsApiConfigMixin, TestCase):
when configuration is enabled and all required configuration is provided.
"""
credentials_config = self.create_credentials_config(enabled=False)
self.assertFalse(credentials_config.is_learner_issuance_enabled)
assert not credentials_config.is_learner_issuance_enabled
credentials_config = self.create_credentials_config(enable_learner_issuance=False)
self.assertFalse(credentials_config.is_learner_issuance_enabled)
assert not credentials_config.is_learner_issuance_enabled
credentials_config = self.create_credentials_config()
self.assertTrue(credentials_config.is_learner_issuance_enabled)
assert credentials_config.is_learner_issuance_enabled

View File

@@ -58,7 +58,7 @@ class TestCredentialsSignalsSendGrade(TestCase):
# Test direct send
send_grade_if_interesting(self.user, self.key, mode, status, 'A', 1.0)
self.assertIs(mock_send_grade_to_credentials.delay.called, called)
assert mock_send_grade_to_credentials.delay.called is called
mock_send_grade_to_credentials.delay.reset_mock()
# Test query
@@ -69,11 +69,11 @@ class TestCredentialsSignalsSendGrade(TestCase):
mode=mode
)
send_grade_if_interesting(self.user, self.key, None, None, 'A', 1.0)
self.assertIs(mock_send_grade_to_credentials.delay.called, called)
assert mock_send_grade_to_credentials.delay.called is called
def test_send_grade_missing_cert(self, _, mock_send_grade_to_credentials, _mock_is_learner_issuance_enabled):
send_grade_if_interesting(self.user, self.key, None, None, 'A', 1.0)
self.assertFalse(mock_send_grade_to_credentials.delay.called)
assert not mock_send_grade_to_credentials.delay.called
@ddt.data([True], [False])
@ddt.unpack
@@ -81,7 +81,7 @@ class TestCredentialsSignalsSendGrade(TestCase):
mock_send_grade_to_credentials, _mock_is_learner_issuance_enabled):
mock_is_course_run_in_a_program.return_value = in_program
send_grade_if_interesting(self.user, self.key, 'verified', 'downloadable', 'A', 1.0)
self.assertIs(mock_send_grade_to_credentials.delay.called, in_program)
assert mock_send_grade_to_credentials.delay.called is in_program
def test_send_grade_queries_grade(self, mock_is_course_run_in_a_program, mock_send_grade_to_credentials,
_mock_is_learner_issuance_enabled):
@@ -89,9 +89,8 @@ class TestCredentialsSignalsSendGrade(TestCase):
with mock_passing_grade('B', 0.81):
send_grade_if_interesting(self.user, self.key, 'verified', 'downloadable', None, None)
self.assertTrue(mock_send_grade_to_credentials.delay.called)
self.assertEqual(mock_send_grade_to_credentials.delay.call_args[0],
(self.user.username, str(self.key), True, 'B', 0.81))
assert mock_send_grade_to_credentials.delay.called
assert mock_send_grade_to_credentials.delay.call_args[0] == (self.user.username, str(self.key), True, 'B', 0.81)
mock_send_grade_to_credentials.delay.reset_mock()
@mock.patch.dict(settings.FEATURES, {'ASSUME_ZERO_GRADE_IF_ABSENT_FOR_ALL_TESTS': False})
@@ -99,14 +98,14 @@ class TestCredentialsSignalsSendGrade(TestCase):
_mock_is_learner_issuance_enabled):
mock_is_course_run_in_a_program.return_value = True
send_grade_if_interesting(self.user, self.key, 'verified', 'downloadable', None, None)
self.assertFalse(mock_send_grade_to_credentials.delay.called)
assert not mock_send_grade_to_credentials.delay.called
def test_send_grade_without_issuance_enabled(self, _mock_is_course_run_in_a_program,
mock_send_grade_to_credentials, mock_is_learner_issuance_enabled):
mock_is_learner_issuance_enabled.return_value = False
send_grade_if_interesting(self.user, self.key, 'verified', 'downloadable', None, None)
self.assertTrue(mock_is_learner_issuance_enabled.called)
self.assertFalse(mock_send_grade_to_credentials.delay.called)
assert mock_is_learner_issuance_enabled.called
assert not mock_send_grade_to_credentials.delay.called
def test_send_grade_records_enabled(self, _mock_is_course_run_in_a_program, mock_send_grade_to_credentials,
_mock_is_learner_issuance_enabled):
@@ -116,24 +115,24 @@ class TestCredentialsSignalsSendGrade(TestCase):
# Correctly sent
send_grade_if_interesting(self.user, self.key, 'verified', 'downloadable', None, None)
self.assertTrue(mock_send_grade_to_credentials.delay.called)
assert mock_send_grade_to_credentials.delay.called
mock_send_grade_to_credentials.delay.reset_mock()
# Correctly not sent
site_config.site_values['ENABLE_LEARNER_RECORDS'] = False
site_config.save()
send_grade_if_interesting(self.user, self.key, 'verified', 'downloadable', None, None)
self.assertFalse(mock_send_grade_to_credentials.delay.called)
assert not mock_send_grade_to_credentials.delay.called
def test_send_grade_records_disabled_globally(
self, _mock_is_course_run_in_a_program, mock_send_grade_to_credentials,
_mock_is_learner_issuance_enabled
):
self.assertTrue(is_learner_records_enabled())
assert is_learner_records_enabled()
with override_settings(FEATURES={"ENABLE_LEARNER_RECORDS": False}):
self.assertFalse(is_learner_records_enabled())
assert not is_learner_records_enabled()
send_grade_if_interesting(self.user, self.key, 'verified', 'downloadable', None, None)
self.assertFalse(mock_send_grade_to_credentials.delay.called)
assert not mock_send_grade_to_credentials.delay.called
@skip_unless_lms
@@ -150,13 +149,13 @@ class TestCredentialsSignalsUtils(TestCase):
def test_is_course_run_in_a_program_success(self, mock_get_programs):
mock_get_programs.return_value = self.data
self.assertTrue(is_course_run_in_a_program(self.course_run['key']))
self.assertEqual(mock_get_programs.call_args[0], (self.site,))
assert is_course_run_in_a_program(self.course_run['key'])
assert mock_get_programs.call_args[0] == (self.site,)
def test_is_course_run_in_a_program_failure(self, mock_get_programs):
mock_get_programs.return_value = self.data
course_run2 = CourseRunFactory()
self.assertFalse(is_course_run_in_a_program(course_run2['key']))
assert not is_course_run_in_a_program(course_run2['key'])
@skip_unless_lms
@@ -167,14 +166,14 @@ class TestCredentialsSignalsEmissions(ModuleStoreTestCase):
def test_cert_changed(self, mock_send_grade_if_interesting):
user = UserFactory()
self.assertFalse(mock_send_grade_if_interesting.called)
assert not mock_send_grade_if_interesting.called
GeneratedCertificateFactory(user=user)
self.assertTrue(mock_send_grade_if_interesting.called)
assert mock_send_grade_if_interesting.called
def test_grade_changed(self, mock_send_grade_if_interesting):
user = UserFactory()
course = XModuleCourseFactory()
self.assertFalse(mock_send_grade_if_interesting.called)
assert not mock_send_grade_if_interesting.called
CourseGradeFactory().update(user, course=course)
self.assertTrue(mock_send_grade_if_interesting.called)
assert mock_send_grade_if_interesting.called

View File

@@ -2,7 +2,7 @@
Test credentials tasks
"""
import pytest
import mock
from django.conf import settings
from django.test import TestCase, override_settings
@@ -39,11 +39,11 @@ class TestSendGradeToCredentialTask(TestCase):
tasks.send_grade_to_credentials.delay('user', 'course-v1:org+course+run', True, 'A', 1.0).get()
self.assertEqual(mock_get_api_client.call_count, 1)
self.assertEqual(mock_get_api_client.call_args[0], (self.user,))
assert mock_get_api_client.call_count == 1
assert mock_get_api_client.call_args[0] == (self.user,)
self.assertDictEqual(mock_get_api_client.call_args[1], {'org': 'org'})
self.assertEqual(api_client.grades.post.call_count, 1)
assert api_client.grades.post.call_count == 1
self.assertDictEqual(api_client.grades.post.call_args[0][0], {
'username': 'user',
'course_run': 'course-v1:org+course+run',
@@ -60,5 +60,5 @@ class TestSendGradeToCredentialTask(TestCase):
task = tasks.send_grade_to_credentials.delay('user', 'course-v1:org+course+run', True, 'A', 1.0)
self.assertRaises(Exception, task.get)
self.assertEqual(mock_get_api_client.call_count, tasks.MAX_RETRIES + 1)
pytest.raises(Exception, task.get)
assert mock_get_api_client.call_count == (tasks.MAX_RETRIES + 1)

View File

@@ -47,10 +47,10 @@ class TestGetCredentials(CredentialsApiConfigMixin, CacheIsolationTestCase):
'only_visible': 'True',
}
cache_key = '{}.{}'.format(self.credentials_config.CACHE_KEY, self.user.username)
self.assertEqual(kwargs['querystring'], querystring)
self.assertEqual(kwargs['cache_key'], cache_key)
assert kwargs['querystring'] == querystring
assert kwargs['cache_key'] == cache_key
self.assertEqual(actual, expected)
assert actual == expected
def test_get_one(self, mock_get_edx_api_data):
expected = factories.UserCredential()
@@ -70,10 +70,10 @@ class TestGetCredentials(CredentialsApiConfigMixin, CacheIsolationTestCase):
'program_uuid': program_uuid,
}
cache_key = '{}.{}.{}'.format(self.credentials_config.CACHE_KEY, self.user.username, program_uuid)
self.assertEqual(kwargs['querystring'], querystring)
self.assertEqual(kwargs['cache_key'], cache_key)
assert kwargs['querystring'] == querystring
assert kwargs['cache_key'] == cache_key
self.assertEqual(actual, expected)
assert actual == expected
def test_type_filter(self, mock_get_edx_api_data):
get_credentials(self.user, credential_type='program')
@@ -88,4 +88,4 @@ class TestGetCredentials(CredentialsApiConfigMixin, CacheIsolationTestCase):
'only_visible': 'True',
'type': 'program',
}
self.assertEqual(kwargs['querystring'], querystring)
assert kwargs['querystring'] == querystring