├── .gitignore ├── requirements.txt ├── run.py └── src ├── __init__.py ├── calculadora.py ├── calculadora_test.py └── operations ├── __init__.py ├── add.py ├── add_test.py ├── sub.py ├── sub_test.py └── test ├── __init__.py ├── add.py └── sub.py /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | **/__pycache__ 3 | venv 4 | storage.db 5 | .pytest_cache -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | attrs==20.3.0 2 | Faker==6.5.0 3 | iniconfig==1.1.1 4 | packaging==20.9 5 | pluggy==0.13.1 6 | py==1.10.0 7 | pyparsing==2.4.7 8 | pytest==6.2.2 9 | python-dateutil==2.8.1 10 | six==1.15.0 11 | text-unidecode==1.3 12 | toml==0.10.2 13 | -------------------------------------------------------------------------------- /run.py: -------------------------------------------------------------------------------- 1 | from src.calculadora import Calculadora 2 | from src.operations.add import AddOperation 3 | from src.operations.sub import SubOperation 4 | 5 | calc = Calculadora(AddOperation(), SubOperation()) 6 | op1 = calc.add(2, 5, True) 7 | op2 = calc.sub(5, 3, False) 8 | 9 | print(op1) 10 | print(op2) 11 | -------------------------------------------------------------------------------- /src/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programadorLhama/unittests_python/5ce65721d9d5be65dfcc271e5bcda459ff504d74/src/__init__.py -------------------------------------------------------------------------------- /src/calculadora.py: -------------------------------------------------------------------------------- 1 | class Calculadora: 2 | 3 | def __init__(self, adicao, subtracao): 4 | self.adicao = adicao 5 | self.subtracao = subtracao 6 | 7 | def add(self, number1, number2, op): 8 | if op: 9 | return self.adicao.soma(number1, number2) 10 | return None 11 | 12 | def sub(self, number1, number2, op): 13 | if op: 14 | return self.subtracao.diferenca(number1, number2) 15 | return None 16 | -------------------------------------------------------------------------------- /src/calculadora_test.py: -------------------------------------------------------------------------------- 1 | from faker import Faker 2 | from .operations.test.add import AddOperationSpy 3 | from .operations.test.sub import SubOperationSpy 4 | from .calculadora import Calculadora 5 | 6 | fake = Faker() 7 | 8 | def test_add(): 9 | addOperation = AddOperationSpy() 10 | subOperation = SubOperationSpy() 11 | calculadora = Calculadora(addOperation, subOperation) 12 | 13 | number1 = fake.random_number() 14 | number2 = fake.random_number() 15 | 16 | result = calculadora.add(number1, number2, True) 17 | 18 | # Testing input 19 | assert addOperation.soma_attributes['number1'] == number1 20 | assert addOperation.soma_attributes['number2'] == number2 21 | 22 | # Testing output 23 | assert result is not None 24 | 25 | 26 | def test_sub(): 27 | addOperation = AddOperationSpy() 28 | subOperation = SubOperationSpy() 29 | calculadora = Calculadora(addOperation, subOperation) 30 | 31 | number1 = fake.random_number() 32 | number2 = fake.random_number() 33 | 34 | result = calculadora.sub(number1, number2, True) 35 | 36 | # Testing input 37 | assert subOperation.diferenca_attributes['number1'] == number1 38 | assert subOperation.diferenca_attributes['number2'] == number2 39 | 40 | # Testing output 41 | assert result is not None 42 | -------------------------------------------------------------------------------- /src/operations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programadorLhama/unittests_python/5ce65721d9d5be65dfcc271e5bcda459ff504d74/src/operations/__init__.py -------------------------------------------------------------------------------- /src/operations/add.py: -------------------------------------------------------------------------------- 1 | class AddOperation: 2 | 3 | def soma(self, number1, number2): 4 | return number1 + number2 5 | -------------------------------------------------------------------------------- /src/operations/add_test.py: -------------------------------------------------------------------------------- 1 | from faker import Faker 2 | from .add import AddOperation 3 | 4 | fake = Faker() 5 | 6 | def test_soma(): 7 | addOperation = AddOperation() 8 | 9 | number1 = fake.random_number() 10 | number2 = fake.random_number() 11 | expected = number1 + number2 12 | 13 | result = addOperation.soma(number1, number2) 14 | 15 | assert result == expected -------------------------------------------------------------------------------- /src/operations/sub.py: -------------------------------------------------------------------------------- 1 | class SubOperation: 2 | 3 | def diferenca(self, number1, number2): 4 | return number1 - number2 5 | -------------------------------------------------------------------------------- /src/operations/sub_test.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | from .sub import SubOperation 3 | 4 | subOperation = SubOperation() 5 | 6 | @pytest.mark.parametrize('num1, num2, result', 7 | [ 8 | (3, 2, 1), 9 | (4, 1, 3) 10 | ] 11 | ) 12 | def test_sub(num1, num2, result): 13 | assert subOperation.diferenca(num1, num2) == result 14 | -------------------------------------------------------------------------------- /src/operations/test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/programadorLhama/unittests_python/5ce65721d9d5be65dfcc271e5bcda459ff504d74/src/operations/test/__init__.py -------------------------------------------------------------------------------- /src/operations/test/add.py: -------------------------------------------------------------------------------- 1 | from faker import Faker 2 | 3 | faker = Faker() 4 | 5 | class AddOperationSpy: 6 | 7 | def __init__(self): 8 | self.soma_attributes = {} 9 | 10 | def soma(self, number1, number2): 11 | self.soma_attributes['number1'] = number1 12 | self.soma_attributes['number2'] = number2 13 | 14 | return faker.random_number() 15 | -------------------------------------------------------------------------------- /src/operations/test/sub.py: -------------------------------------------------------------------------------- 1 | from faker import Faker 2 | 3 | faker = Faker() 4 | 5 | class SubOperationSpy: 6 | 7 | def __init__(self): 8 | self.diferenca_attributes = {} 9 | 10 | def diferenca(self, number1, number2): 11 | self.diferenca_attributes['number1'] = number1 12 | self.diferenca_attributes['number2'] = number2 13 | 14 | return faker.random_number() 15 | --------------------------------------------------------------------------------