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.