title: Why do assertions in unittest use TestCase.assertEqual not the assert keyword?
body: <p>Python's built-in unittest module makes assertions with <code>TestCase.assert*</code> methods: </p>
  
  <pre><code>class FooTest(TestCase):
      def test_foo(self):
          self.assertEqual(1,1)
          self.assertNotEqual(1,2)
          self.assertTrue(True)
  </code></pre>
  
  <p>I have generally used a testrunner such as <a href="http://somethingaboutorange.com/mrl/projects/nose/1.0.0/usage.html?highlight=assert">nose</a> or <a href="http://doc.pytest.org/en/latest/assert.html#assert-with-the-assert-statement">py.test</a> which allow use of the built-in <code>assert</code> keyword when making assertions:</p>
  
  <pre><code>assert 1 == 1
  assert 1 != 2
  assert True
  </code></pre>
  
  <p>What is the motivation for unittest's <code>TestCase.assert*</code> approach and what are the strengths and weaknesses of this vs asserting with the built-in assert keyword? Are there reasons why unittest's syntax should be favoured?</p>