diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..5035f91 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "python.testing.pytestArgs": [ + "." + ], + "python.testing.unittestEnabled": false, + "python.testing.nosetestsEnabled": false, + "python.testing.pytestEnabled": true +} \ No newline at end of file diff --git a/README.md b/README.md index 72fdd3b..d21e2f0 100644 --- a/README.md +++ b/README.md @@ -1 +1,75 @@ -# pytest-example \ No newline at end of file +# Pilha com Pytest + +Este projeto é um exemplo de implementação de pilha com realizações de testes usando o Framework Pytest. + +As seguintes ações são testadas: +- Pilha vazia +- Elemento inserido +- Comprimento da pilha +- O primeiro elemento da pilha +- Número total de elementos +- Retirar elementos da pilha + + +### Instalar o Pytest: + + $ pip install -U pytest + +### Executar o código: + + $ pytest ex1_test.py + +### Sobre o código: + +Esse método verfica se está vazia. +O .fixture é chamado durante a realização do teste. + +```python +@pytest.fixture +def pilha(): + return Pilha() + +def test_isEmpty(pilha): + pilha.isEmpty() + assert True == pilha.isEmpty() +``` + + +Esse método verifica se o elemento está sendo inserido na pilha. +```python +def test_push(pilha): + pilha.push(32) + assert 32 == pilha.items[0] +``` + +Esse método verifica o comprimento da pilha, mas somente na primeira dimensão (quando se trabalha com matrizes). +```python +def test_pop(pilha): pilha.push(3) + pilha.push(18) + pilha.pop() + assert 1 == len(pilha.items) +``` + +Esse método verifica se o último elemento inserido na pilha é o primeiro elemento da pilha. +```python +def test_peek(pilha): + pilha.push(15) + pilha.push(0) + assert 0 == pilha.peek() +``` + +Esse método verifica o número total de elementos na pilha. +```python +def test_size(pilha): + pilha.push(11) + pilha.push(4) + assert 2 == pilha.size() +``` + +Esse método verifica se pode retirar elementos da pilha quando a pilha está vazia. +```python +def test_pop_empty(pilha): + with pytest.raises(IndexError): + pilha.pop() +``` + diff --git a/ex1_test.py b/ex1_test.py new file mode 100644 index 0000000..c202ef0 --- /dev/null +++ b/ex1_test.py @@ -0,0 +1,35 @@ +import pytest +from src.ClassPilha import Pilha + +@pytest.fixture +def pilha(): + return Pilha() + +def test_isEmpty(pilha): # verfica se está vazia + pilha.isEmpty() + assert True == pilha.isEmpty() + +def test_push(pilha): # verifica o primeiro elemento inserido + pilha.push(32) + assert 32 == pilha.items[0] + +def test_pop(pilha): # verifica o comprimento da pilha somente na primeira dimensão (quando se trabalha com matrizes) + pilha.push(3) + pilha.push(18) + pilha.pop() + assert 1 == len(pilha.items) + +def test_peek(pilha): # verifica o primeiro elemento da pilha + pilha.push(15) + pilha.push(0) + assert 0 == pilha.peek() + +def test_size(pilha): # verifica o número total de elementos na pilha + pilha.push(11) + pilha.push(4) + assert 2 == pilha.size() + +def test_pop_empty(pilha): # verfica se pode retirar elementos quando não há nada na pilha + with pytest.raises(IndexError): + pilha.pop() + \ No newline at end of file diff --git a/src/ClassPilha.py b/src/ClassPilha.py new file mode 100644 index 0000000..fb1b32d --- /dev/null +++ b/src/ClassPilha.py @@ -0,0 +1,18 @@ +class Pilha: + def __init__(self): + self.items = [] + + def isEmpty(self): + return self.items == [] + + def push(self, item): + self.items.append(item) + + def pop(self): + return self.items.pop() + + def peek(self): + return self.items[len(self.items)-1] + + def size(self): + return len(self.items) \ No newline at end of file