我在python oop中有一个实验室测试。用Python创建一个购物车OOP
创建一个名为
ShoppingCart
的类。创建一个构造函数没有参数,设置
total
属性为零,并初始化名为items
一个空的字典属性。创建一个方法
add_item
需要item_name
,quantity
和price
参数。此方法应将添加项目 的成本添加到当前总值中。它还应该添加一个条目到 项目字典,这样的关键是item_name
和价值是 数量的项目。创建一个方法
remove_item
需要与add_item
类似的参数。它应该删除已添加到 购物车中且不需要的商品。此方法应从当前总计中扣除已删除项目的成本 ,并相应地更新项目 字典。如果要移除的物品的数量超过购物车中该物品的当前数量 ,则假定该物品的所有条目均为 将被移除。
创建方法
checkout
需要cash_paid
并从付款中返回 余额值。如果cash_paid
不足以覆盖总额 ,则返回“支付的现金不足”。创建一个名为
Shop
类,有一个构造函数没有 参数并初始化名为quantity
属性为100。请 确保店铺从ShoppingCart
继承。在Shop类中,重写remove_item方法,例如调用 Shop不带参数的remove_item按数量递减。
这里是我的代码
class ShoppingCart(object):
def __init__(self):
self.total = 0
self.items = dict()
def add_item(self, item_name, quantity, price):
if item_name != None and quantity >= 1:
self.items.update({item_name: quantity})
if quantity and price >= 1:
self.total += (quantity * price)
def remove_item(self, item_name, quantity, price):
self.total -= (quantity * price)
try:
if quantity >= self.items[item_name]:
self.items.pop(item_name, None)
self.items[item_name] -= quantity
except(KeyError, RuntimeError):
pass
def checkout(self, cash_paid):
balance = 0
if cash_paid < self.total:
return "Cash paid not enough"
balance = cash_paid - self.total
return balance
class Shop(ShoppingCart):
def __init__(self):
self.quantity = 100
def remove_item(self):
self.quantity -= 1
和代码通过了所有测试用例的单元测试
import unittest
class ShoppingCartTestCases(unittest.TestCase):
def setUp(self):
self.cart = ShoppingCart()
self.shop = Shop()
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')
def test_remove_item(self):
self.cart.add_item('Mango', 3, 10)
self.cart.remove_item('Mango', 2, 10)
self.assertEqual(self.cart.total, 10, msg='Cart total not correct after removing item')
self.assertEqual(self.cart.items['Mango'], 1, msg='Quantity of items not correct after removing item')
def test_checkout_returns_correct_balance(self):
self.cart.add_item('Mango', 3, 10)
self.cart.add_item('Orange', 16, 10)
self.assertEqual(self.cart.checkout(265), 75, msg='Balance of checkout not correct')
self.assertEqual(self.cart.checkout(25), 'Cash paid not enough', msg='Balance of checkout not correct')
def test_shop_is_instance_of_shopping_cart(self):
self.assertTrue(isinstance(self.shop, ShoppingCart), msg='Shop is not a subclass of ShoppingCart')
def test_shop_remove_item_method(self):
for i in range(15):
self.shop.remove_item()
self.assertEqual(self.shop.quantity, 85)
。但是当我尝试提交时,它会失败,并说它不符合所有测试规范。我已经加倍检查了它,发现了可能出现的任何错误,但仍然一样。我不知道我错过了什么。有没有解决的办法?
“提交” 在哪里?有什么办法可以自己尝试吗?平台(或任何你试图提交你的代码)给你什么错误信息? –
如果您确定单元测试与提交工作时正在运行的单元测试相同,那么您最好与负责运行实验室的人员进行核对。如果你不确定,那么与他们核对也是一件好事。 – bouteillebleu