The unittest module provides assertion methods specific to common types and operations. Both versions will test the same things, but
the dedicated one will provide a better error message, simplifying the debugging process.
This rule reports an issue when an assertion can be simplified by using a more specific function. The array below gives a list of assertions on
which an issue will be raised, and which function should be used instead:
  
    
    
  
  
    
      | Original | 
      Dedicated | 
    
  
  
    
      assertTrue(x == y)
  | 
      assertEqual(x, y)
  | 
    
    
      assertTrue(x != y)
  | 
      assertNotEqual(x, y)
  | 
    
    
      assertFalse(x == y)
  | 
      assertNotEqual(x, y)
  | 
    
    
      assertFalse(x != y)
  | 
      assertEqual(x, y)
  | 
    
    
      assertTrue(x < y)
  | 
      assertLess(x, y)
  | 
    
    
      assertTrue(x <= y)
  | 
      assertLessEqual(x, y)
  | 
    
    
      assertTrue(x > y)
  | 
      assertGreater(x, y)
  | 
    
    
      assertTrue(x >= y)
  | 
      assertGreaterEqual(x, y)
  | 
    
    
      assertTrue(x is y)
  | 
      assertIs(x, y)
  | 
    
    
      assertTrue(x is not y)
  | 
      assertIsNot(x, y)
  | 
    
    
      assertFalse(x is y)
  | 
      assertIsNot(x, y)
  | 
    
    
      assertFalse(x is not y)
  | 
      assertIs(x, y)
  | 
    
    
      assertTrue(x in y)
  | 
      assertIn(x, y)
  | 
    
    
      assertFalse(x in y)
  | 
      assertNotIn(x, y)
  | 
    
    
      assertTrue(isinstance(x, y))
  | 
      assertIsInstance(x, y)
  | 
    
    
      assertFalse(isinstance(x, y))
  | 
      assertNotIsInstance(x, y)
  | 
    
    
      assertEqual(x, round(y, z))
  | 
      assertAlmostEqual(x, y, z)
  | 
    
    
      assertAlmostEqual(x, round(y, z))
  | 
      assertAlmostEqual(x, y, z)
  | 
    
    
      assertNotEqual(x, round(y, z))
  | 
      assertNotAlmostEqual(x, y, z)
  | 
    
    
      assertNotAlmostEqual(x, round(y, z))
  | 
      assertNotAlmostEqual(x, y, z)
  | 
    
    
      assertEqual(x, None)
  | 
      assertIsNone(x)
  | 
    
    
      assertNotEqual(x, None)
  | 
      assertIsNotNone(x)
  | 
    
    
      assertTrue(x is None)
  | 
      assertIsNone(x)
  | 
    
    
      assertTrue(x is not None)
  | 
      assertIsNotNone(x)
  | 
    
    
      assertFalse(x is None)
  | 
      assertIsNotNone(x)
  | 
    
    
      assertFalse(x is not None)
  | 
      assertIsNone(x)
  | 
    
    
      assertEqual(x, True)
  | 
      assertTrue(x)
  | 
    
    
      assertEqual(x, False)
  | 
      assertFalse(x)
  | 
    
  
Noncompliant code example
import unittest
class SomeTest(unittest.TestCase):
  def test_something(self):
    x = foo()
    y = bar()
    self.assertFalse(x == y)  # Noncompliant
    self.assertTrue(x < y)  # Noncompliant
Compliant solution
class SomeTest(unittest.TestCase):
  def test_something(self):
    x = foo()
    y = bar()
    self.assertNotEqual(x, y)
    self.assertLess(x, y)