class TestShoppingCart(unittest.TestCase): def setUp(self): self.pan = Item("Pan", 7.0) self.jugo = Item("Jugo", 5.0) self.shopping_cart = ShoppingCart() self.shopping_cart.add_item(self.pan) def tearDown(self): pass def test_cinco_mas_cinco_igual_diez(self): assert 5 + 5 == 10 def test_nombre_producto_igual_pan(self): self.assertEqual(self.pan.name, "Pan") def test_nombre_producto_diferente_manzana(self): self.assertNotEqual(self.jugo.name, "Manzana") def test_contiene_productos(self): self.assertTrue(self.shopping_cart.contains_items()) def test_no_contiene_productos(self): self.shopping_cart.remove_item(self.pan) self.assertFalse(self.shopping_cart.contains_items()) def test_obener_producto_pan(self): item = self.shopping_cart.get_item(self.pan) self.assertIs(item, self.pan) self.assertIsNot(item, self.jugo) def test_exception_al_obtener_jugo(self): with self.assertRaises(NotExistsItemError): self.shopping_cart.get_item(self.jugo) def test_total_con_un_producto(self): total = self.shopping_cart.total() self.assertGreater(total, 0) self.assertLess(total, self.pan.price + 1.0) self.assertEqual(total, self.pan.price) def test_codigo_pan(self): self.assertRegex(self.pan.code(), self.pan.name) def test_fail(self): if 2 > 3: self.fail("Dos no es mayor a tres!") # cuando el desarrollador conoce que la prueba no va a ejecutar @unittest.skip("Colocar nuestros motivos") #decorarmos nuestra prueba def test_prueba_skip(self): pass # cuando el desarrollador desconoce si la prueba va a ejecutarse #@unittest.skipIf(True, "Colocar nuestros motivos") #@unittest.skipIf(API_VERSION < 18, "La version es obsoleta") #@unittest.skipUnless(False, "Colocamos nuestros motivos") @unittest.skipUnless(3 > 5, "Tres es menor a cinco") def test_prueba1_skip(self): pass
class TestShoppingCart(unittest.TestCase): def setUp(self): self.pan = Item("Pan", 7.0) self.jugo = Item("Jugo", 5.0) self.shopping_cart = ShoppingCart() self.shopping_cart.add_item(self.pan) def tearDown(self): print("Método tearDown despés de la preba") def test_cinco_mas_cinco_igual_dies(self): assert 5 + 5 == 10 def test_nombre_producto_igual_pan(self): self.assertEqual(self.pan.name, "Pan") def test_nombre_producto_diferente_manzana(self): item = Item("Pan blanco", 12.0) self.assertNotEqual(self.jugo.name, "Manzana") def test_contiene_productos(self): self.assertTrue(self.shopping_cart.contains_items()) def test_no_contene_productos(self): self.shopping_cart.remove_item(self.pan) self.assertFalse(self.shopping_cart.contains_items()) def test_obtener_producto_pan(self): item = self.shopping_cart.get_item(self.pan) self.assertIs(item, self.pan) self.assertIsNot(item, self.jugo) def test_exceptio_al_obtener_jugo(self): with self.assertRaises(NotExistsItemError): self.shopping_cart.get_item(self.jugo) def test_total_con_un_producto(self): total = self.shopping_cart.total() self.assertGreater(total, 0) self.assertLess(total, self.pan.price + 1.0) self.assertEqual(total, self.pan.price) def test_codigo_pan(self): self.asserNotRegex(self.pan.code(), self.pan.name) def test_fail(self): if 2 > 3: self.fail('Dos no es mayor a 3') #@unittest.skip("Colocamos nuestros motivos") #@unittest.skipIf(CONS < 18,"La versión es obsoleta") comopara a verdadero @unittest.skipUnless(3 > 5, "Colocamos nuestros motivos") #compara por el falso def test_prueba_skip(self): pass
class TestShoppingCart(unittest.TestCase): def setUp(self): self.carrot = Item('Carrot', 900) self.strawberry = Item('Strawberry', 500) self.apple = Item('Apple', 700) self.shopping_cart = ShoppingCart() self.shopping_cart.add_item(self.strawberry) def tearDown(self): pass def test_product_name_equal_to_apple(self): #== value_to_test = 'Apple' self.assertEqual( self.apple.name, value_to_test, 'Falló: {} no es igual a {}'.format(self.apple.name, value_to_test)) def test_product_name_different_to_apple(self): self.assertNotEqual(self.carrot.name, 'Apple') def test_shopping_cart_contains_some_item(self): self.assertTrue(self.shopping_cart.contains_items()) def test_shopping_cart_not_contains_any_item(self): self.shopping_cart.clear_items() self.assertFalse(self.shopping_cart.contains_items()) def test_get_item_strawberry(self): # is item = self.shopping_cart.get_item(self.strawberry) self.assertIs(item, self.strawberry) def test_exception_to_get_item(self): with self.assertRaises(NotExistsItemError): self.shopping_cart.get_item(self.carrot) def test_total_items(self): total = self.shopping_cart.total() self.assertGreater(total, 0) self.assertLess(total, self.carrot.price) def test_code_carrot(self): self.assertRegex(self.carrot.code(), self.carrot.name) @unittest.skip("Motivo de skip" ) #Cuando conocemos que la prueba no puede ejecutarse def test_skip(self): pass @unittest.skipIf( False, 'Motivo por el que se omite' ) #Cuando desconocemos si la prueba puede o no ejecutarse, a causa de motivos externos def test_skip_if(self): pass
class TestShoppingCart(unittest.TestCase): def setUp(self): """ Método que se ejecuta antes de cada prueba """ self.pan = Item('pan', 12) self.jugo = Item('jugo', 5) self.shopping_cart = ShoppingCart() self.shopping_cart.add_item(self.pan) def tearDown(self): """ Método que se ejecuta después da cada prueba """ pass def test_cinco_mas_cinco_igual_diez(self): """ Test sencillo que siempre debe pasar """ assert 5 + 5 == 10 def test_nombre_producto_pan(self): """ Test para el nombre de producto """ self.assertEqual(self.pan.name, 'pan') def test_nombre_producto_no_manzana(self): """ Test para nombre de producto """ self.assertNotEqual(self.jugo.name, 'manzana') def test_contiene_productos(self): """ Test para productos en el carrito """ self.assertTrue(self.shopping_cart.contains_items()) def test_no_contiene_productos(self): """ Test de eliminar items del carrito """ self.shopping_cart.remove_item(self.pan) self.assertFalse(self.shopping_cart.contains_items()) def test_obtener_producto_pan(self): """ Test para obtener un producto (pan) """ item = self.shopping_cart.get_item(self.pan) self.assertIs(item, self.pan) self.assertIsNot(item, self.jugo) def test_excepcion_obtener_jugo(self): """ Test para verificar la excepcion lanzada al obtener producto que no esté en el carrito """ with self.assertRaises(NotExistsItemError): self.shopping_cart.get_item(self.jugo) def test_total_con_un_producto(self): """ Test para validar que el precio total sea el correcto """ total = self.shopping_cart.total() self.assertGreater(total, 0) self.assertLess(total, self.pan.price + 1) self.assertEqual(total, self.pan.price) def test_codigo_producto(self): """ Test para validar que el código del producto contenga el nombre del producto """ self.assertRegex(self.pan.code(), self.pan.name) def test_fail(self): """ Test para probar el método fail """ if 2 > 3: # 3 > 2 para ejecutar el método self.fail('2 no es mayor a 3') # @unittest.skip("Motivos para saltar la prueba") # @unittest.skipUnless(False, "Motivos para saltar la prueba") @unittest.skipIf(True, "Motivos para saltar la prueba") def test_prueba_skip(self): """ Test que será omitido, decoramos para indicar que no será ejecutado """ pass
class TestShoppingCart(unittest.TestCase): #realizar acciones antes de realizar la prueba unitaria #conectarse a una base de datos, consumir una api, leer variables de entorno,escribir sobre un archivo #metodo que se ejecuta antes de cada una de las pruebas def setUp(self): #print("Método setUp antes de la prueba") self.pan = Item("Pan",7.0) self.jugo = Item("Jugo",5.0) self.shopping_cart = ShoppingCart() self.shopping_cart.add_item(self.pan) #metodo que se ejecuta despues de cada una de las pruebas unitarias def tearDown(self): #print("Método tearDown despues de la prueba") pass # a cada prueba le corresponde un mensaje de setUp y tearDown def test_cinco_mas_cinco_igual_diez(self): assert 5 + 5 == 10 """def test_nombre_producto_igual_manzana(self): item = Item("Manzana",12.0) self.assertEqual(item.name,"Manzana") def test_nombre_producto_diferente_manzana(self): item = Item("Pan Blanco",15.0) self.assertNotEqual(item.name,"Manzana") """ def test_nombre_producto_igual_pan(self): self.assertEqual(self.pan.name,"Pan") def test_nombre_producto_igual_jugo(self): #compara dos valores self.assertEqual(self.jugo.name,"Jugo") # == def test_contiene_productos(self): self.assertTrue(self.shopping_cart.contains_items()) def test_no_contiene_productos(self): self.shopping_cart.remove_item(self.pan) self.assertFalse(self.shopping_cart.contains_items()) #comprobar si dos objetos son el mismo def test_obtener_producto_pan(self): item = self.shopping_cart.get_item(self.pan) # se puede utilizar dos en una misma funcion #compara dos objetos # se puede colocar mas de un assert self.assertIs(item,self.pan) # is evaluamos un objeto self.assertIsNot(item,self.jugo) def test_exception_al_obtener_jugo(self): # con with y assertRaises se puede agregar la excepcion creada with self.assertRaises(NotExistsItemError): item = self.shopping_cart.get_item(self.jugo) def test_total_con_un_producto(self): total = self.shopping_cart.total() # sea mayor self.assertGreater(total,0) # sea menor self.assertLess(total,self.pan.price + 1.0) # es igual a lo que debe de ser self.assertEqual(total, self.pan.price) def test_codigo_pan(self): # revisa si contiene el nombre del producto #self.assertRegex(self.pan.code(),self.pan.name) este python 3.7 self.assertRegexpMatches(self.pan.code(),self.pan.name) #python 2.7 #validar de forma manual utilizando el metodo fail def test_fail(self): if 2 > 3: self.fail("Dos no es mayor a tres!") """ salida si falla ....F..... ====================================================================== FAIL: test_fail (__main__.TestShoppingCart) ---------------------------------------------------------------------- Traceback (most recent call last): File "shopping_cart/test_shopping_cart.py", line 79, in test_fail self.fail("Dos no es mayor a tres") AssertionError: Dos no es mayor a tres ---------------------------------------------------------------------- Ran 10 tests in 0.004s FAILED (failures=1) """ #saltar una prueba para que no se ocupe #desarrollador conoce @unittest.skip("Colocamos nuestros motivos") def test_prueba_skip(self): pass """ .........s. ---------------------------------------------------------------------- Ran 11 tests in 0.003s OK (skipped=1) para tener mas informacion colocar al final la bandera -v """ #cuando el desarrollador desconoce puede o no puede ejecutarse #True la prueba se salta False la prueba se ejecuta #@unittest.skipIf(True,"Colocamos nuestros motivos") #evaluando a falso si es false no se ejecuta si es True no se salta @unittest.skipUnless(False,"Colocamos nuestros motivos") def test_prueba_skip2(self): pass