Unitest в питоне, чтобы внести сумму - PullRequest
0 голосов
/ 30 мая 2018

Я новичок в юнит-тестировании в Python, и это мой первый юнит-тест.Я не знаю, правильно ли я делаю юнит-тест, нужна помощь.Я должен проверить функцию, в первой функции я хочу проверить законный депозит, а во второй функции я хочу проверить незаконный депозит, например, внести «яблоко» или «ящерица» вместо суммы.Поскольку я новичок в модульном тестировании, у меня много путаницы по этому поводу.Я читаю разные посты, но в моем случае мне все еще трудно написать модульный тест для этих двух функций.

bankaccount.py

class BankAccount():

    def __init__(self):

        self.account_number=0
        self.pin_number=""
        self.balance=0.0
        self.interest=0.0
        self.transaction_list=[]

    def deposit_funds(self, amount):
        self.balance+=amount


    def withdraw_funds(self, amount):

        if amount<=balance:
            self.balance-=amount

import unittest

from bankaccount import BankAccount

class TestBankAcount(unittest.TestCase):

    def setUp(self):
        # Create a test BankAccount object
        self.account = BankAccount()

        # Provide it with some property values        
        self.account.balance        = 1000.0

    def test_legal_deposit_works(self):
        # code here to test that depsositing money using the account's
        # 'deposit_funds' function adds the amount to the balance.

     self.assertTrue(100,self.account.deposit_funds(100))


 def test_illegal_deposit_raises_exception(self):
            # code here to test that depositing an illegal value (like 'bananas'
            # or such - something which is NOT a float) results in an exception being
            # raised.

unittest.main()  

1 Ответ

0 голосов
/ 30 мая 2018

Вы можете сделать что-то вроде этого:

Пусть ваш класс выдаст ошибку, когда тип значений, предоставленных для deposit_funds, не соответствует сценарию использования.

class BankAccount:

    def __init__(self):

        self.account_number = 0
        self.pin_number = ""
        self.balance = 0.0
        self.interest = 0.0
        self.transaction_list = []

    def deposit_funds(self, amount):
        try:
            self.balance += amount
        except TypeError:
            raise TypeError

    def withdraw_funds(self, amount):
        if amount <= balance:
            self.balance -= amount

Получите ваштесты обнаруживают, что TypeError выбрасывается, когда это происходит.

class TestBankAcount(unittest.TestCase):

    def setUp(self):
        self.test_account = BankAccount()
        self.test_account.balance = 1000.0

    def test_legal_deposit(self):
        expected_balance = 1100.0
        self.test_account.deposit_funds(100.0)
        self.assertEqual(expected_balance, self.test_account.balance)

    def test_illegal_deposit_raises_exception(self):
        # code here to test that depositing an illegal value (like 'bananas'
        # or such - something which is NOT a float) results in an exception being
        # raised.
        with self.assertRaises(TypeError):
            self.test_account.deposit_funds('dummy value')


if __name__ == '__main__':

    unittest.main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...