def main():
    print("====> first cart")
    cart = ShoppingCart()
    cart.add_item()
    cart.remove_item()
    cart.add_item()
    cart.add_item()
    cart.add_item()
    cart.remove_item()
    cart.checkout()
    cart.pay()

    # Go shopping again
    print("====> second cart")
    cart = ShoppingCart()
    cart.add_item()
    cart.add_item()
    cart.checkout()
    cart.empty_cart()
    cart.add_item()
    cart.checkout()
    cart.pay()

    # Try to add another item
    print('====> Expect an error here.')
    cart.add_item()
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
def main():
    cart = ShoppingCart()
    cart.add_item()
    cart.remove_item()
    cart.add_item()
    cart.add_item()
    cart.add_item()
    cart.remove_item()
    cart.checkout()
    cart.paid_for()
    cart.add_item()
    cart.checkout()
    cart.paid_for()
Exemple #5
0
class TestShoppingCart(unittest.TestCase):

    def setUp(self):
        self.bread = Item('Bread', 3.5)
        self.beer = Item('Beer', 1.75)
        self.shopping_cart = ShoppingCart()
        self.shopping_cart.add_item({'item':self.bread, 'quantity': 2})

    def tearDown(self):
        pass

    def test_item_name_eq_bread(self):
        self.assertEqual(self.bread.name, 'Bread')

    def test_item_name_dif_bread(self):
        self.assertNotEqual(self.beer.name, 'Bread')

    def test_shopping_cart_has_item_bread(self):
        self.assertTrue(self.shopping_cart.contains_item())
    
    def test_shopping_cart_has_no_item(self):
        self.shopping_cart.remove_item(self.bread)
        self.assertFalse(self.shopping_cart.contains_item())
    
    def test_shopping_cart_get_item_bread(self):
        item = self.shopping_cart.get_item(self.bread)
        self.assertIs(item, self.bread)

    def test_get_item_exception(self):
        with self.assertRaises(NotExistsItemError):
            self.shopping_cart.get_item(self.beer)

    def test_get_total_eq_seven(self):
        self.assertGreater(self.shopping_cart.total(), 0)
        self.assertLessEqual(self.shopping_cart.total(), 7.0)

    def test_item_code(self):
        self.assertRegex(self.beer.code(), self.beer.name)

    def test_clear_cart(self):
        self.shopping_cart.clear_cart()
        self.assertFalse(self.shopping_cart.contains_item())
    def test_fail(self):
        if 2**0.5 > 1:
            self.fail('The square rooot of 2 is greater than 1')

    #@unittest.skip('Not implemented ')
    @unittest.skipIf( True, ' Shopping Cart has items')
    def test_skip(self):
        pass
class ShoppinCartTestCase(unittest.TestCase):
    """Testing the ShoppingCart """
    def setUp(self):
        """
        Setting up the instance and assigning attributes for testing
        """
        self.my_cart = ShoppingCart()
        self.my_cart_2 = Shop()

    def test_add_item_total(self):
        """Test if method adds items and updates total accordingly"""
        my_total = self.my_cart.add_item('Cookies', 2, 400)
        self.assertEqual(my_total, 800)

#    def test_add_item_entry(self):
#        """Test if items dictionary is updated after adding an item"""
#        self.assertDictEqual(self.my_cart.items,{'Cookies':2},msg="Invalid dictionary")

    def test_remove_item_total(self):
        """Test whether total cash is updated after removing an item"""
        self.my_cart.add_item('Chocolate', 5, 300)
        self.my_cart.remove_item('Chocolate', 2, 300)
        self.assertEqual(self.my_cart.total,
                         900,
                         msg='Remove item method inaccurate')

    def test_remove_item_entry(self):
        """Tests whether items dictionary is updated after removing an item"""
        self.my_cart.add_item('Chocolate', 5, 300)
        self.my_cart.remove_item('Chocolate', 2, 300)
        self.assertDictEqual(self.my_cart.items, {'Chocolate': 3},
                             msg="Invalid dictionary")

    def test_exceeding_current_quantity(self):
        """Tests that all entries of an item are to be removed if quantity exeeds current."""
        self.my_cart.add_item('Chocolate', 5, 300)
        self.my_cart.remove_item('Chocolate', 7, 300)
        self.assertDictEqual(
            self.my_cart.items, {},
            msg="Doesn't remove all entries if quantity exeeds the current")

    def test_checkout(self):
        """Tests balance after payment"""
        self.my_cart.add_item('Chocolate', 2, 300)
        self.assertEqual(self.my_cart.checkout(700), 100)

    def test_checkout_not_enough(self):
        """Tests if payment is enough """
        self.my_cart.add_item('Chocolate', 2, 300)
        self.assertEqual(self.my_cart.checkout(100), "Cash paid not enough")

    def test_shop_if_subclass(self):
        """Tests whether Shop is a subclass of ShoppingCart"""
        self.assertTrue(issubclass(Shop, ShoppingCart),
                        msg="Shop doesn't inherit from ShoppingCart")

    def test_shop_quantity(self):
        """Tests whether Shop quantity attribute is initialized to 100"""
        self.assertEqual(self.my_cart_2.quantity,
                         100,
                         msg="Shop quantity attribute not equal to 100")

    def test_override_remove_item(self):
        """Tests that calling Shop's remove_item with no arguments decrements quantity by one"""
        self.my_cart_2.add_item('Chocolate', 5, 300)
        self.my_cart_2.remove_item()
        self.assertDictEqual(self.my_cart_2.items, {'Chocolate': 4},
                             msg="Does not remove quantity by one")

#   def test_cart_property_initialization(self):
#     self.assertEqual(self.cart.total, 0, msg='Initial value of total not correct')
#     self.assertIsInstance(self.cart.items, dict, msg='Items is not a dictionary')

    def test_add_item(self):
        self.cart.add_item('Mango', 3, 10)
        self.assertEqual(self.cart.total,
                         30,
                         msg='Cart total not correct after adding items')
        self.assertEqual(self.cart.items['Mango'],
                         3,
                         msg='Quantity of items not correct after adding item')
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
Exemple #8
0
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
Exemple #9
0
class TestShoppingCart(unittest.TestCase):
    """A Class to Test ShoppingCart Class"""
    def setUp(self):
        """Setting up the ShoppingCart Class"""
        self.my_cart = ShoppingCart()
        self.my_cart2 = Shop()

    def test_add_item_total(self):
        """Test if the method add_item updates total accordingly"""
        my_total = self.my_cart.add_item('Cookies', 2, 400)
        self.assertEqual(my_total, 800)
        self.assertDictEqual(self.my_cart.items, {'Cookies', 2},
                             msg="Invalid Dictionary")

    def test_add_item_entry(self):
        """Tests whether an entry is added accordingly in the items dict"""
        my_total = self.my_cart.add_item('Cookies', 2, 400)
        self.assertEqual(my_total, 800)

    def test_remove_item_total(self):
        """Tests whether an item is removed accordingly in the items dict"""
        self.my_cart.add_item('Cookies', 5, 1500)
        self.my_cart.remove_item('Cookies', 2, 300)
        self.assertEqual(self.my_cart.total, 900, "Inacurate remove method")

    def test_remove_item_entry(self):
        """Tests whether the dictionary is updated accordingly"""
        self.my_cart.add_item('Cookies', 5, 1500)
        self.my_cart.remove_item('Cookies', 2, 300)
        self.assertDictEqual(self.my_cart.items, {'Cookies', 3},
                             msg="Invalid Dictionary")

    def test_exceeds_current_quantity(self):
        """Test that all entries are removed if the quantity exceeds the current"""
        self.my_cart.add_item('Cookies', 5, 1500)
        self.my_cart.remove_item('Cookies', 2, 300)
        self.assertEqual(
            self.my_cart.items, {},
            msg="Doesnt remove all if the quantity exceeds the current")

    def test_checkout(self):
        """Test whether it returns the correct balance"""
        self.my_cart.add_item('Cookies', 5, 1500)
        self.my_cart.checkout(self.my_cart.checkout(700), 100)

    def test_checkout_not_enough(self):
        """Tests if the payment is enough"""
        self.my_cart.add_item('Cookies', 5, 1500)
        self.assertEqual(self.my_cart.checkout(100), "Cash paid not enough")

    def test_shop_if_subclass(self):
        """Tests whether shop inherits from ShoppingCart"""
        self.assertTrue(issubclass(Shop, ShoppingCart),
                        msg="Shop doesnt inherits from ShoppingCart")

    def test_shop_quantity(self):
        """Tests whether Shop quantity attribute is initialized to 100"""
        self.assertEqual(self.my_cart2.quantity, 100)

    def test_override_remove_item(self):
        """Tests whether calling Shop's remove_item with no arguments decrements quantity by one."""
        self.my_cart2.add_item('Cookies', 5, 1500)
        self.my_cart2.remove_item()
        self.assertDictEqual(self.my_cart2.items, {'Cookies': 5},
                             msg="Does not remove quantity by one")
class TestShoppingCart(unittest.TestCase):
    def setUp(self):  # metodo que se ejecuta antes de la pruebas
        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):  # metodo que se ejecuta desues de la pruebas
        pass

    def test_cinco_mas_cinco_igual_dies(self):
        assert 5 + 5 == 10

    def test_nombre_producto_igual_pan(
            self):  # comprobar si el nombre del  producto se igual a otro
        self.assertEqual(self.pan.name, "Pan")

    def test_nombre_producto_diferente_manzana(
            self):  # comprobar si el nombre del  producto No es igual a otro
        self.assertNotEqual(self.jugo.name, "Manzana")

    def test_contiene_productos(
            self):  # comprobar si un carrito contiene un producto
        self.assertTrue(self.shopping_cart.constains_items())

    def test_no_contiene_productos(
            self):  # comprobar si un carrito No contiene un producto
        self.shopping_cart.remove_item(self.pan)
        self.assertFalse(self.shopping_cart.constains_items())

    def test_obtener_productos_pan(
            self):  # comprobar si dos objetos son los mismos
        item = self.shopping_cart.get_item(self.pan)
        self.assertIs(item, self.pan)
        self.assertIsNot(
            item, self.jugo)  # comprobar si dos objetos No son los mismos

    def test_exeption_al_obtener_jugo(
            self):  # lanzar error si no consigue el producto
        with self.assertRaises(NotExistsItemError):
            self.shopping_cart.get_item(self.jugo)

    def test_total_com_un_productos(self):  # comprobar el total del carrito
        total = self.shopping_cart.total()
        self.assertGreater(total, 0)  # mayor a 0
        self.assertLess(total, self.pan.price + 1.0)  # menor a 1.0
        self.assertEqual(total, self.pan.price)  # igual

    def test_codigo_pan(
        self
    ):  # validar que el nombre del prodcuto se encuentar dentro del codigo
        self.assertRegex(self.pan.code(), self.pan.name)

    def test_fail(
            self
    ):  # no esta dentro de la libreria y sirve para hacer test manual
        if 2 > 3:
            self.fail("Dos no es mayor a test!")

    API_VERSION = 17
    # @unittest.skip("Colocamos nuestros motivos") # el programador quiere saltarse la prueba y sabe el porque
    # @unittest.skipIf(API_VERSION < 18,"la version es obsoleta") # el programador quiere saltarse la prueba y debe cumplirse una condicion
    @unittest.skipUnless(3 > 5, "Colocamos nuestros motivos")
    def test_prueba_skip(self):
        pass