No domínio dinâmico do desenvolvimento de software, garantir a qualidade do aplicativo por meio de testes automatizados é vital. O teste automatizado envolve a execução de vários testes que requerem uma configuração específica de arquivos e diretórios. Configurar e desmontar ambientes de teste de forma eficiente é uma parte significativa deste processo, que muitas vezes pode ser uma tarefa tediosa e propensa a erros sem as ferramentas certas.
Encontrar as ferramentas certas para simplificar tarefas pode fazer uma grande diferença. O módulo utilitário padrão conhecido como shutil é uma abreviatura de utilitários shell. Ele fornece operações de arquivo de alto nível para copiar, mover e remover arquivos e diretórios que podem simplificar o gerenciamento de ambientes de teste. Este blog explica como o módulo shutil pode agilizar as operações de arquivos em testes automatizados de software.
Para garantir que cada teste comece com o ambiente correto, precisamos automatizar o processo de configuração, criando um ambiente de teste consistente e isolado.
O módulo Shutil faz parte da Biblioteca Padrão do Python, portanto não precisamos instalar nada extra. Basta importá-lo no início do seu script.
# Import shell utility module import shutil
Ao testar um aplicativo, geralmente precisamos de um conjunto específico de arquivos de dados. Em vez de copiar arquivos manualmente, quatro métodos comuns fornecem uma maneira fácil e eficiente de copiar um arquivo usando o módulo shutil.
shutil.copy(source, destination, *, follow_symlinks=True)
Este método copia o arquivo de origem para o diretório ou arquivo especificado no destino e retorna o destino do arquivo. Ele copia os dados do arquivo e o modo de permissão do arquivo, mas os metadados (hora de criação e modificação do arquivo) do arquivo copiado não são preservados. A origem e o destino devem ser objetos ou strings semelhantes a caminhos. O destino pode especificar arquivo ou diretório. Se o destino especificar um caminho para um diretório, o arquivo será copiado para o diretório de destino com o nome do arquivo do caminho de origem.
Ao trabalhar com link simbólico:
Se follow_symlinks=True, o destino será uma cópia do arquivo para o qual o link simbólico na origem aponta. O valor padrão do parâmetro follow_symlinks é True.
Se follow_symlinks=False, o destino será criado como um link simbólico.
# Import shell utility module import shutil # Copy the content of source_file.txt to destination_file.txt shutil.copy('source_file.txt', 'destination_file.txt')
shutil.copy2(source, destination, *, follow_symlinks=True)
O método shutil.copy2() fornece a funcionalidade adicional de preservar todos os metadados do arquivo que puder. Outras características são as mesmas do método shutil.copy(). O destino pode especificar arquivo ou diretório. Se o destino for um diretório, o arquivo será copiado com o mesmo nome do arquivo de origem.
# Import shell utility module import shutil # Copy the content of source_file.txt to destination_file.txt shutil.copy2('source_file.txt', 'destination_file.txt')
Eu usei esse método ao automatizar o teste, pois ele copia o conteúdo do arquivo junto com a maioria de seus metadados associados para que possamos obter programaticamente o mesmo resultado que copiar e colar um arquivo usando atalhos de teclado em um gerenciador de arquivos gráfico e também de perto replica o comportamento de uma operação típica de copiar e colar usando um mouse no gerenciador de arquivos gráfico.
shutil.copyfile(source, destination, *, follow_symlinks=True)
Usando este método, o conteúdo de um arquivo é copiado de sua origem até seu destino sem metadados. A origem e o destino devem ser objetos ou strings semelhantes a caminhos. O caminho de destino só pode especificar um caminho para um arquivo, mas não pode especificar um caminho para um diretório.
# Import shell utility module import shutil # Copy the content of source_file.txt to destination_file.txt shutil.copyfile('source_file.txt', 'destination_file.txt')
shutil.copyfileobj(fsrc, fdst, length)
Este método copia o conteúdo do objeto de arquivo de origem para o objeto de arquivo de destino. A origem e o destino devem ser objetos semelhantes a arquivos. Não preserva metadados e não retorna nenhum valor. O parâmetro opcional length especifica um valor inteiro para o tamanho do buffer.
# Import shell utility module import shutil # Create file objects source_file_object = open("../hello.txt", "r") destination_file_object = open("CopyFile/copyFalseSrcPath.txt", "w") # Copy the content of the file object to another file object shutil.copyfileobj(source_file_object, destination_file_object)
Cada método fornece diferentes aspectos de operações de arquivo, proporcionando flexibilidade e poder para atender a diversas necessidades de teste. O módulo shutil do Python oferece ferramentas essenciais para operações eficientes de arquivos em testes de software:
Algumas outras funções utilitárias comumente usadas que podem ser úteis ao automatizar nossos testes são:
Mais funções utilitárias e descrições detalhadas podem ser encontradas na documentação oficial.
O módulo shutil em Python serve como um conjunto de ferramentas versátil não apenas em testes de software, mas também em diversos campos de desenvolvimento de software, como controle e implantação de versão, ciência de dados e aprendizado de máquina, TI e administração de sistemas, pesquisa e academia, e muitos mais.
Integrando o shutil em nossos processos de teste, podemos realizar operações complexas de arquivos com o mínimo de código, economizando nosso tempo e esforço e nos permitindo focar no desenvolvimento de software de alta qualidade.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3