<python>unnitest

这篇博客主要介绍如何使用Python内置的unittest模块进行单元测试,通过实例详细讲解了unittest的主要功能和用法,包括测试套件的创建、断言方法的使用以及测试结果的输出。
摘要由CSDN通过智能技术生成

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)


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值