diff --git a/common/djangoapps/student/tests/factories.py b/common/djangoapps/student/tests/factories.py
index 6c5f34a3fbd7e5d69f0b6db374ad6ccadba9730f..f8649a33410178e92d58ef94120f2965e6dd9f58 100644
--- a/common/djangoapps/student/tests/factories.py
+++ b/common/djangoapps/student/tests/factories.py
@@ -142,6 +142,11 @@ class CourseEnrollmentFactory(DjangoModelFactory):
             course_id = kwargs.get('course_id')
             course_overview = None
             if course_id is not None:
+                # 'course_id' is not needed by the model when course is passed.
+                # This arg used to be called course_id before we added the CourseOverview
+                # foreign key constraint to CourseEnrollment.
+                del kwargs['course_id']
+
                 if isinstance(course_id, six.string_types):
                     course_id = CourseKey.from_string(course_id)
                     course_kwargs.setdefault('id', course_id)
@@ -152,6 +157,9 @@ class CourseEnrollmentFactory(DjangoModelFactory):
                     pass
 
             if course_overview is None:
+                if 'id' not in course_kwargs and course_id:
+                    course_kwargs['id'] = course_id
+
                 course_overview = CourseOverviewFactory(**course_kwargs)
             kwargs['course'] = course_overview