-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_app.py
More file actions
57 lines (47 loc) · 2.24 KB
/
test_app.py
File metadata and controls
57 lines (47 loc) · 2.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import unittest
from unittest.mock import patch
from io import StringIO
from app import calculator
class TestCalculator(unittest.TestCase):
@patch('builtins.input', side_effect=['1', '10', '5'])
@patch('sys.stdout', new_callable=StringIO)
def test_addition(self, mock_stdout, mock_input):
calculator()
self.assertIn("The result is: 15.0", mock_stdout.getvalue())
@patch('builtins.input', side_effect=['2', '10', '5'])
@patch('sys.stdout', new_callable=StringIO)
def test_subtraction(self, mock_stdout, mock_input):
calculator()
self.assertIn("The result is: 5.0", mock_stdout.getvalue())
@patch('builtins.input', side_effect=['3', '10', '5'])
@patch('sys.stdout', new_callable=StringIO)
def test_multiplication(self, mock_stdout, mock_input):
calculator()
self.assertIn("The result is: 50.0", mock_stdout.getvalue())
@patch('builtins.input', side_effect=['4', '10', '5'])
@patch('sys.stdout', new_callable=StringIO)
def test_division(self, mock_stdout, mock_input):
calculator()
self.assertIn("The result is: 2.0", mock_stdout.getvalue())
@patch('builtins.input', side_effect=['4', '10', '0'])
@patch('sys.stdout', new_callable=StringIO)
def test_division_by_zero(self, mock_stdout, mock_input):
calculator()
self.assertIn("Error: Division by zero is not allowed.", mock_stdout.getvalue())
@patch('builtins.input', side_effect=['5', '50'])
@patch('sys.stdout', new_callable=StringIO)
def test_percentage(self, mock_stdout, mock_input):
calculator()
self.assertIn("The result is: 0.5", mock_stdout.getvalue())
@patch('builtins.input', side_effect=['6'])
@patch('sys.stdout', new_callable=StringIO)
def test_invalid_operation(self, mock_stdout, mock_input):
calculator()
self.assertIn("Invalid input. Please select a valid operation.", mock_stdout.getvalue())
@patch('builtins.input', side_effect=['1', 'abc', '5'])
@patch('sys.stdout', new_callable=StringIO)
def test_invalid_number_input(self, mock_stdout, mock_input):
calculator()
self.assertIn("Error: Please enter a valid number.", mock_stdout.getvalue())
if __name__ == '__main__':
unittest.main()