diff --git a/tests/app/soc/modules/gci/views/test_homepage.py b/tests/app/soc/modules/gci/views/test_homepage.py
index 90668a3..976a583 100644
--- a/tests/app/soc/modules/gci/views/test_homepage.py
+++ b/tests/app/soc/modules/gci/views/test_homepage.py
@@ -104,4 +104,4 @@
     # TOOD
     #apply_tmpl = response.context['apply']
     #self.assertTrue(apply_tmpl.data.profile)
-    #self.assertFalse('profile_link' in apply_tmpl.context())
+    #self.assertNotIn('profile_link', apply_tmpl.context())
diff --git a/tests/app/soc/modules/gci/views/test_task.py b/tests/app/soc/modules/gci/views/test_task.py
index 39117c9..13f026d 100644
--- a/tests/app/soc/modules/gci/views/test_task.py
+++ b/tests/app/soc/modules/gci/views/test_task.py
@@ -500,7 +500,7 @@
     self.profile_helper.createMentor(self.org)
 
     profile = self.profile_helper.profile
-    self.assertFalse(profile.key() in self.task.subscribers)
+    self.assertNotIn(profile.key(), self.task.subscribers)
 
     url = self._taskPageUrl(self.task)
     response = self.buttonPost(url, 'button_subscribe')
@@ -524,7 +524,7 @@
 
     task = task_model.GCITask.get(self.task.key())
     self.assertResponseRedirect(response)
-    self.assertFalse(profile.key() in task.subscribers)
+    self.assertNotIn(profile.key(), task.subscribers)
 
   def testPostSubmitWork(self):
     """Tests for submitting work.
diff --git a/tests/app/soc/modules/gsoc/views/test_homepage.py b/tests/app/soc/modules/gsoc/views/test_homepage.py
index d9511dd..9749dd5 100644
--- a/tests/app/soc/modules/gsoc/views/test_homepage.py
+++ b/tests/app/soc/modules/gsoc/views/test_homepage.py
@@ -122,4 +122,4 @@
     self.assertHomepageTemplatesUsed(response)
     apply_tmpl = response.context['apply']
     self.assertTrue(apply_tmpl.data.profile)
-    self.assertFalse('profile_link' in apply_tmpl.context())
+    self.assertNotIn('profile_link', apply_tmpl.context())
diff --git a/tests/app/soc/modules/gsoc/views/test_org_home.py b/tests/app/soc/modules/gsoc/views/test_org_home.py
index 8c1126a..89b0834 100644
--- a/tests/app/soc/modules/gsoc/views/test_org_home.py
+++ b/tests/app/soc/modules/gsoc/views/test_org_home.py
@@ -105,17 +105,17 @@
     return response.context
 
   def assertNoStudent(self, context):
-    self.assertFalse('student_apply_block' in context)
-    self.assertFalse('student_profile_link' in context)
-    self.assertFalse('submit_proposal_link' in context)
+    self.assertNotIn('student_apply_block', context)
+    self.assertNotIn('student_profile_link', context)
+    self.assertNotIn('submit_proposal_link', context)
 
   def assertNoMentor(self, context):
-    self.assertFalse('mentor_apply_block' in context)
-    self.assertFalse('mentor_profile_link' in context)
-    self.assertFalse('role' in context)
-    self.assertFalse('mentor_applied' in context)
-    self.assertFalse('invited_role' in context)
-    self.assertFalse('mentor_request_link' in context)
+    self.assertNotIn('mentor_apply_block', context)
+    self.assertNotIn('mentor_profile_link', context)
+    self.assertNotIn('role', context)
+    self.assertNotIn('mentor_applied', context)
+    self.assertNotIn('invited_role', context)
+    self.assertNotIn('mentor_request_link', context)
 
   def assertMentor(self):
     self.profile_helper.createMentor(self.org)
@@ -123,11 +123,11 @@
     self.assertNoStudent(context)
 
     self.assertIn('mentor_apply_block', context)
-    self.assertFalse('mentor_profile_link' in context)
+    self.assertNotIn('mentor_profile_link', context)
     self.assertEqual('a mentor', context['role'])
-    self.assertFalse('mentor_applied' in context)
-    self.assertFalse('invited_role' in context)
-    self.assertFalse('mentor_request_link' in context)
+    self.assertNotIn('mentor_applied', context)
+    self.assertNotIn('invited_role', context)
+    self.assertNotIn('mentor_request_link', context)
 
   def testAnonymousPreSignup(self):
     self.timeline_helper.orgSignup()
@@ -136,24 +136,24 @@
 
     self.assertIn('mentor_apply_block', context)
     self.assertIn('mentor_profile_link', context)
-    self.assertFalse('role' in context)
-    self.assertFalse('mentor_applied' in context)
-    self.assertFalse('invited_role' in context)
-    self.assertFalse('mentor_request_link' in context)
+    self.assertNotIn('role', context)
+    self.assertNotIn('mentor_applied', context)
+    self.assertNotIn('invited_role', context)
+    self.assertNotIn('mentor_request_link', context)
 
   def testAnonymousDuringSignup(self):
     self.timeline_helper.studentSignup()
     context = self.homepageContext()
     self.assertIn('student_apply_block', context)
     self.assertIn('student_profile_link', context)
-    self.assertFalse('submit_proposal_link' in context)
+    self.assertNotIn('submit_proposal_link', context)
 
-    self.assertFalse('mentor_apply_block' in context)
+    self.assertNotIn('mentor_apply_block', context)
     self.assertIn('mentor_profile_link', context)
-    self.assertFalse('role' in context)
-    self.assertFalse('mentor_applied' in context)
-    self.assertFalse('invited_role' in context)
-    self.assertFalse('mentor_request_link' in context)
+    self.assertNotIn('role', context)
+    self.assertNotIn('mentor_applied', context)
+    self.assertNotIn('invited_role', context)
+    self.assertNotIn('mentor_request_link', context)
 
   def testAnonymousPostSignup(self):
     self.timeline_helper.postStudentSignup()
@@ -162,22 +162,22 @@
 
     self.assertIn('mentor_apply_block', context)
     self.assertIn('mentor_profile_link', context)
-    self.assertFalse('role' in context)
-    self.assertFalse('mentor_applied' in context)
-    self.assertFalse('invited_role' in context)
-    self.assertFalse('mentor_request_link' in context)
+    self.assertNotIn('role', context)
+    self.assertNotIn('mentor_applied', context)
+    self.assertNotIn('invited_role', context)
+    self.assertNotIn('mentor_request_link', context)
 
   def testAnonymousStudentsAnnounced(self):
     self.timeline_helper.studentsAnnounced()
     context = self.homepageContext()
     self.assertNoStudent(context)
 
-    self.assertFalse('mentor_apply_block' in context)
-    self.assertFalse('mentor_profile_link' in context)
-    self.assertFalse('role' in context)
-    self.assertFalse('mentor_applied' in context)
-    self.assertFalse('invited_role' in context)
-    self.assertFalse('mentor_request_link' in context)
+    self.assertNotIn('mentor_apply_block', context)
+    self.assertNotIn('mentor_profile_link', context)
+    self.assertNotIn('role', context)
+    self.assertNotIn('mentor_applied', context)
+    self.assertNotIn('invited_role', context)
+    self.assertNotIn('mentor_request_link', context)
 
   def testMentorPreSignup(self):
     self.timeline_helper.orgSignup()
@@ -201,11 +201,11 @@
     self.assertNoStudent(context)
 
     self.assertIn('mentor_apply_block', context)
-    self.assertFalse('mentor_profile_link' in context)
+    self.assertNotIn('mentor_profile_link', context)
     self.assertEqual('an administrator', context['role'])
-    self.assertFalse('mentor_applied' in context)
-    self.assertFalse('invited_role' in context)
-    self.assertFalse('mentor_request_link' in context)
+    self.assertNotIn('mentor_applied', context)
+    self.assertNotIn('invited_role', context)
+    self.assertNotIn('mentor_request_link', context)
 
   def testAppliedMentor(self):
     self.profile_helper.createMentorRequest(self.org)
@@ -213,11 +213,11 @@
     self.assertNoStudent(context)
 
     self.assertIn('mentor_apply_block', context)
-    self.assertFalse('mentor_profile_link' in context)
-    self.assertFalse('role' in context)
+    self.assertNotIn('mentor_profile_link', context)
+    self.assertNotIn('role', context)
     self.assertIn('mentor_applied', context)
-    self.assertFalse('invited_role' in context)
-    self.assertFalse('mentor_request_link' in context)
+    self.assertNotIn('invited_role', context)
+    self.assertNotIn('mentor_request_link', context)
 
   def testInvitedMentor(self):
     self.profile_helper.createInvitation(self.org, 'mentor')
@@ -225,11 +225,11 @@
     self.assertNoStudent(context)
 
     self.assertIn('mentor_apply_block', context)
-    self.assertFalse('mentor_profile_link' in context)
-    self.assertFalse('role' in context)
-    self.assertFalse('mentor_applied' in context)
+    self.assertNotIn('mentor_profile_link', context)
+    self.assertNotIn('role', context)
+    self.assertNotIn('mentor_applied', context)
     self.assertEqual('a mentor', context['invited_role'])
-    self.assertFalse('mentor_request_link' in context)
+    self.assertNotIn('mentor_request_link', context)
 
   def testInvitedOrgAdmin(self):
     self.profile_helper.createInvitation(self.org, 'org_admin')
@@ -237,18 +237,18 @@
     self.assertNoStudent(context)
 
     self.assertIn('mentor_apply_block', context)
-    self.assertFalse('mentor_profile_link' in context)
-    self.assertFalse('role' in context)
-    self.assertFalse('mentor_applied' in context)
+    self.assertNotIn('mentor_profile_link', context)
+    self.assertNotIn('role', context)
+    self.assertNotIn('mentor_applied', context)
     self.assertEqual('an administrator', context['invited_role'])
-    self.assertFalse('mentor_request_link' in context)
+    self.assertNotIn('mentor_request_link', context)
 
   def testStudentDuringSignup(self):
     self.timeline_helper.studentSignup()
     self.profile_helper.createStudent()
     context = self.homepageContext()
     self.assertIn('student_apply_block', context)
-    self.assertFalse('student_profile_link' in context)
+    self.assertNotIn('student_profile_link', context)
     self.assertIn('submit_proposal_link', context)
     self.assertNoMentor(context)
 
diff --git a/tests/app/soc/modules/gsoc/views/test_org_profile.py b/tests/app/soc/modules/gsoc/views/test_org_profile.py
index 9f9de11..83b317b 100644
--- a/tests/app/soc/modules/gsoc/views/test_org_profile.py
+++ b/tests/app/soc/modules/gsoc/views/test_org_profile.py
@@ -229,7 +229,7 @@
     self.assertEqual(context['page_name'], 'Organization profile')
     self.assertIn('org_home_page_link', context)
     self.assertIn('page_name', context)
-    self.assertFalse('slot_transfer_page_link' in context)
+    self.assertNotIn('slot_transfer_page_link', context)
 
     self.gsoc.allocations_visible = True
     self.gsoc.put()
@@ -242,7 +242,7 @@
     response = self.get(url)
     self.assertResponseOK(response)
     self.assertOrgProfilePageTemplatesUsed(response)
-    self.assertFalse('slot_transfer_page_link' in response.context)
+    self.assertNotIn('slot_transfer_page_link', response.context)
 
   def test404IsReturnedWhenOrgDoesNotExists(self):
     """Tests that when an org admin tries to access the profile page for an
diff --git a/tests/app/soc/modules/gsoc/views/test_profile_show.py b/tests/app/soc/modules/gsoc/views/test_profile_show.py
index 4941f5e..06b195d 100644
--- a/tests/app/soc/modules/gsoc/views/test_profile_show.py
+++ b/tests/app/soc/modules/gsoc/views/test_profile_show.py
@@ -77,8 +77,8 @@
     self.assertIn('program_name', context)
     self.assertIn('profile', context)
     self.assertIn('css_prefix', context)
-    self.assertFalse('submit_tax_link' in context)
-    self.assertFalse('submit_enrollment_link' in context)
+    self.assertNotIn('submit_tax_link', context)
+    self.assertNotIn('submit_enrollment_link', context)
 
     expected_page_name = '%s Profile - %s' % (
         self.profile_helper.program.short_name,
diff --git a/tests/app/soc/modules/gsoc/views/test_proposal_review.py b/tests/app/soc/modules/gsoc/views/test_proposal_review.py
index 1f326ca..6d000b7 100644
--- a/tests/app/soc/modules/gsoc/views/test_proposal_review.py
+++ b/tests/app/soc/modules/gsoc/views/test_proposal_review.py
@@ -274,7 +274,7 @@
     response = self.get(url)
 
     proposal = GSoCProposal.get(proposal.key())
-    self.assertFalse(other_mentor.profile.key() in proposal.possible_mentors)
+    self.assertNotIn(other_mentor.profile.key(), proposal.possible_mentors)
 
   def testPubliclyVisibleButton(self):
     self.profile_helper.createStudent()
