DEV Community

Carolina 🇧🇷
Carolina 🇧🇷

Posted on

Daily Challenge #1 - String Peeler

Depois de entrar no grupo da hashtag #100daysofcode acabei achando esse desafio do Dev.to e aproveitei para usar ao meu favor.
O post desse desafio para quem ainda não conhece:

Vamos ao código!

def stringpeeler(entrada):
    saida = entrada[1:len(entrada)-1]
    return saida

Como achei o desafio simples demais, acabei aproveitando pra aprender um pouco de TDD e mexer com a biblioteca pytest.

# Dev.to Daily Challenge #1 - String Peeler
# https://dev.to/thepracticaldev/daily-challenge-1-string-peeler-4nep
# stringpeeler.py

import pytest

def stringpeeler(entrada):
    if not isinstance(entrada, str):
        raise TypeError('A entrada deve ser uma string')
    if len(entrada)<3:
        return ValueError('A entrada deve ter no mínimo 3 caracteres')
    saida = entrada[1:len(entrada)-1]
    return saida

E o arquivo de testes:

# Dev.to Daily Challenge #1 - String Peeler
# https://dev.to/thepracticaldev/daily-challenge-1-string-peeler-4nep
import pytest
from stringpeeler import stringpeeler

#TDD Training
NOT_STRING = 3524
EMPTY_STRING = ""
TOO_SHORT_STRING = "ab"
TEST_STRING = "zabcdey"

def test_ifString():
    with pytest.raises(TypeError):
        value = stringpeeler(NOT_STRING)

def test_emptyString():
    with pytest.raises(ValueError):
        value = stringpeeler(EMPTY_STRING)

def test_tooShortString():
    with pytest.raises(ValueError):
        value = stringpeeler(TOO_SHORT_STRING)

def test_stringPeeler():
    assert stringpeeler(TEST_STRING) == "abcde"

Usei como referência essa série de posts de TDD em pytest para iniciantes, que é bem educativo e fácil de acompanhar.

Não sei se vou conseguir fazer todo dia, mas estou me divertindo por enquanto. Espero ficar craque em TDD até o último desafio!

Top comments (1)

Collapse
 
byrro profile image
Renato Byrro

Parabéns Carol, boa sorte nos desafios, continue com a disciplina!