Às vezes, funções privadas de um módulo ou classe são simplesmente unidades internas de funcionalidade ainda a serem extraídas, que podem merecer seus próprios testes. Então, por que não testá-los? Nós vai escrever testes para eles mais tarde, se / quando eles são extraídos. Então, por que não escrever os testes agora, quando eles ainda fazem parte do mesmo arquivo?
Para demonstrar:
Primeiro eu escrevi module_a. Agora eu quero escrever testes para isso. Eu gostaria de testar a função 'privada' _private_func. Eu não entendo por que não escreveria um teste para ele, se mais tarde eu poderia refatorá-lo para seu próprio módulo interno e, em seguida, escrever testes para ele.
Suponha que eu tenha um módulo com as seguintes funções (também pode ser uma classe):
def public_func(a):
b = _do_stuff(a)
return _do_more_stuff(b)
_do_stuffe _do_more_stuffsão funções 'privadas' do módulo.
Entendo a ideia de que devemos testar apenas a interface pública, não os detalhes da implementação. No entanto, aqui está a coisa:
_do_stuffe _do_more_stuffcontém a maioria das funcionalidades do módulo. Cada um deles poderia ser uma função pública de um módulo 'interno' diferente. Mas eles ainda não foram desenvolvidos e são grandes o suficiente para serem extraídos para separar arquivos.
Portanto, testar essas funções parece certo porque são unidades importantes de funcionalidade. Se eles estivessem em módulos diferentes como funções públicas, nós os teríamos testado. Então, por que não testá-los quando ainda não foram (ou nunca) extraídos para um arquivo diferente?
