import pytest from fe.access.buyer import Buyer from fe.test.gen_book_data import GenBook from fe.access.new_buyer import register_new_buyer from fe.access.book import Book import uuid class TestPayment: seller_id: str store_id: str buyer_id: str password:str buy_book_info_list: [Book] total_price: int order_id: str buyer: Buyer @pytest.fixture(autouse=True) def pre_run_initialization(self): self.seller_id = "test_payment_seller_id_{}".format(str(uuid.uuid1())) self.store_id = "test_payment_store_id_{}".format(str(uuid.uuid1())) self.buyer_id = "test_payment_buyer_id_{}".format(str(uuid.uuid1())) self.password = self.seller_id gen_book = GenBook(self.seller_id, self.store_id) ok, buy_book_id_list = gen_book.gen(non_exist_book_id=False, low_stock_level=False, max_book_count=5) self.buy_book_info_list = gen_book.buy_book_info_list assert ok b = register_new_buyer(self.buyer_id, self.password) self.buyer = b code, self.order_id = b.new_order(self.store_id, buy_book_id_list) assert code == 200 self.total_price = 0 for item in self.buy_book_info_list: book: Book = item[0] num = item[1] if book.price is None: continue else: self.total_price = self.total_price + book.price * num yield def test_ok(self): code = self.buyer.add_funds(self.total_price) assert code == 200 code = self.buyer.payment(self.order_id) assert code == 200 def test_authorization_error(self): code = self.buyer.add_funds(self.total_price) assert code == 200 self.buyer.password = self.buyer.password + "_x" code = self.buyer.payment(self.order_id) assert code != 200 def test_not_suff_funds(self): code = self.buyer.add_funds(self.total_price - 1) assert code == 200 code = self.buyer.payment(self.order_id) assert code != 200 def test_repeat_pay(self): code = self.buyer.add_funds(self.total_price) assert code == 200 code = self.buyer.payment(self.order_id) assert code == 200 code = self.buyer.payment(self.order_id) assert code != 200