main function:进行unnitest
import unittest
import shopping_cart
def prepare_cart():
cart = []
item = {
'name': 'Super Awesome Water Bottle',
'price': 22.95,
'quantity': 1,
'sku': 'ABC123'
}
item2 = {
'name': 'Awesome Water Bottle',
'price': 12.95,
'quantity': 1,
'sku': '123DEF'
}
shopping_cart.add_item(cart, item)
shopping_cart.add_item(cart, item2)
return cart
class TestShoppingCart(unittest.TestCase):
def test_add_item_to_cart(self):
cart = []
item = {
'name': 'Super Awesome Water Bottle',
'price': 22.95,
'quantity': 1,
'sku': 'ABC123'
}
shopping_cart.add_item(cart, item)
self.assertEqual(len(cart), 1)
self.assertEqual(cart[0]['sku'], 'ABC123')
self.assertEqual(cart[0]['price'], 22.95)
self.assertEqual(cart[0]['name'], 'Super Awesome Water Bottle')
item2 = {
'name': 'Awesome Water Bottle',
'price': 12.95,
'quantity': 1,
'sku': '123DEF'
}
shopping_cart.add_item(cart, item2)
self.assertEqual(len(cart), 2)
self.assertEqual(cart[1]['sku'], '123DEF')
self.assertEqual(cart[1]['price'], 12.95)
self.assertEqual(cart[1]['name'], 'Awesome Water Bottle')
def test_calculate_cart_total(self):
cart = prepare_cart()
total = shopping_cart.calculate_total(cart)
self.assertEqual(total, 35.90)
def test_remove_item(self):
cart = prepare_cart()
shopping_cart.remove_item(cart, 'Super Awesome Water Bottle')
self.assertEqual(len(cart), 1)
self.assertEqual(cart[0]['name'], 'Awesome Water Bottle')
self.assertEqual(cart[0]['price'], 12.95)
def test_update_quantity(self):
cart = prepare_cart()
shopping_cart.update_quantity(cart, 'Super Awesome Water Bottle', 3)
self.assertEqual(cart[0]['quantity'], 3)
total = shopping_cart.calculate_total(cart)
self.assertEqual(total, 81.80)
def test_set_quantity_zero(self):
cart = prepare_cart()
shopping_cart.update_quantity(cart, 'Super Awesome Water Bottle', 0)
self.assertEqual(len(cart), 1)
total = shopping_cart.calculate_total(cart)
self.assertEqual(total, 12.95)
self.assertEqual(cart[0]['name'], 'Awesome Water Bottle')
def test_set_quantity_negative(self):
cart = prepare_cart()
shopping_cart.update_quantity(cart, 'Awesome Water Bottle', -1)
self.assertEqual(len(cart), 1)
total = shopping_cart.calculate_total(cart)
self.assertEqual(total, 22.95)
self.assertEqual(cart[0]['name'], 'Super Awesome Water Bottle')
if __name__ == '__main__':
unittest.main()
module shopping_cart: 被检验的自定义函数
def remove_item(cart, name):
for i in range(len(cart)):
if cart[i]['name'] == name:
del cart[i]
break
def calculate_total(cart):
total = 0
for item in cart:
total += item['price'] * item['quantity']
return total
def add_item(cart, item):
cart.append(item)
def update_quantity(cart, name, quantity):
for item in cart:
if item['name'] == name:
item['quantity'] = quantity
if quantity <= 0:
remove_item(cart, name)
def main():
cart = []
item = {
'name': 'Super Awesome Water Bottle',
'price': 22.95,
'quantity': 1,
'sku': 'ABC123'
}
item2 = {
'name': 'Awesome Water Bottle',
'price': 12.95,
'quantity': 1,
'sku': '123DEF'
}
add_item(cart, item)
add_item(cart, item2)
remove_item(cart, 'Super Awesome Water Bottle')
update_quantity(cart, 'Awesome Water Bottle', 3)