Witam
Mam taki kod i potrzebuję do niego napisać testy jednostkowe. Mam pytanie, co i jak powinienem testować? Mam utworzyć instancje zdefiniowanych klas i posprawdzać czy takie rzeczy jak liczba produktów, czy transakcja zaszła pomyślnie itd się zgadzają?
Będę wdzięczny za podpowiedzi
from users import User, Address
from products import Product
from typing import NamedTuple, Optional
from payments import PaymentMethod
class Order(NamedTuple):
buyer: User
products: list[Product]
shipping_address: Address
payment_method: PaymentMethod
class ShoppingCart:
def __init__(self, owner: User, products: list[Product]):
self.owner = owner
self.products = products
def add_product(self, product: Product, qty: int) -> None:
if qty < 1:
raise ValueError(f"expected qty to be a positive value, got {qty}")
for _ in range(0, qty):
self.products.append(product)
def remove_product(self, product: Product) -> None:
self.products.remove(product)
def count_product(self, product: Product) -> int:
return self.products.count(product)
def __str__(self) -> str:
return f"{self.owner}'s shopping cart"
def __repr__(self) -> str:
return f"{self.__class__.__name__}(owner={self.owner!r}, products={self.products!r})"
def make_order(shopping_cart: ShoppingCart,
shipping_address: Optional[Address] = None,
payment_method: Optional[PaymentMethod] = None) -> Order:
customer = shopping_cart.owner
if shipping_address is None:
shipping_address = customer.shipping_address
if payment_method is None:
payment_method = customer.payment_method
return Order(customer, shopping_cart.products, shipping_address, payment_method)