Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Crossover com o curso manipulaçao de strings - Teste automatizado no extrator de URL

Comecei o curso de manipulação de strings em python em paralelo com o testes automatizados. Querendo já aplicar um pouco do conhecimento, fiz um pequeno código de testes para o curso de manipulação de strings. O teste funciona perfeitamente mas programação orientada a objetos ainda é algo bem novo para mim. Estou precisando de um feedback do meu código. Não tenho muita certeza se a solução que eu pensei é a mais adequada.

Teste:

from unittest import TestCase
from ExtratorArgumentosUrl import ExtratorArgumentosUrl


class TestExtratorArgumentosUrl(TestCase):

    def setUp(self):
        self.url = 'https://www.bytebank.com.br/cambio?moedaorigem=real&moedadestino=dolar&valor=1500'
        self.moedaOrigemEsperada = 'real'
        self.moedaDestinoEsperada = 'dolar'


    def test_extraindo_argumentos(self):
        argumentosUrl = ExtratorArgumentosUrl(self.url)
        argumentosUrl.extraindoArgumentos()

        self.assertEqual(self.moedaOrigemEsperada, argumentosUrl.moedaOrigem)
        self.assertEqual(self.moedaDestinoEsperada, argumentosUrl.moedaDestino)

Extrator de argumentos URL

class ExtratorArgumentosUrl:
    def __init__(self, url):
        if self.urlEhValida(url):
            self.url = url
            self.moedaDestino = ""
            self.moedaOrigem = ""

        else:
            raise LookupError('Url inválida')

    @staticmethod
    def urlEhValida(url):
        if url:
            return True
        else:
            return False

    def extraindoArgumentos(self):

        buscaMoedaOrigem = 'moedaorigem'
        buscaMoedaDestino = 'moedadestino'

        indiceInicialMoedaOrigem = self.encontrarIndiceInicial(buscaMoedaOrigem)
        indiceFinalMoedaOrigem = self.url.find('&')

        indiceInicialMoedaDestino = self.encontrarIndiceInicial(buscaMoedaDestino)
        indiceFinalMoedaDestino= self.url.find('&', indiceFinalMoedaOrigem +1)


        self.moedaOrigem = self.url[indiceInicialMoedaOrigem:indiceFinalMoedaOrigem]
        self.moedaDestino = self.url[indiceInicialMoedaDestino:indiceFinalMoedaDestino]


        print(f'Moeda Origem: {self.moedaOrigem}, Moeda Destino: {self.moedaDestino}')

    def encontrarIndiceInicial(self, moedaBuscada):

        return self.url.find(moedaBuscada) + len(moedaBuscada) + 1

Obrigado.

1 resposta
solução!

Oi Luis, tudo bem?

Você está indo bem, sua solução está correta. Só tenho uma ressalva quanto aos nomes das funções, pois na classe de testes você utiliza snake_case e na classe de extração dos argumentos você utiliza camelCase. No python é mais comum você ver snake_case, porém, não tem problemas em utilizar outros formatos, desde que utilize o mesmo em tudo seguindo dessa forma um único padrão :)

Qualquer dúvida fique a vontade para perguntar, estou a disposição. Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software