tl.testing fornece vários utilitários que podem ser usadas ao escrever testes. & Nbsp; Ele é compatível com as versões do Python 2.6 e 2.7.
Caixas de proteção de diretórios e arquivos
Ao testar código que modifica diretórios e arquivos, é útil para ser capaz de criar e inspecionar uma árvore de amostra de diretórios e arquivos facilmente. O módulo tl.testing.fs fornece suporte para a criação de uma árvore de uma descrição textual, listá-la no mesmo formato e limpar depois de si mesmo.
Em um teste de doc, estas instalações pode ser usado como este para criar e listar um diretório, um arquivo e um link simbólico:
>>> from tl.testing.fs new_sandbox importação, ls
>>> New_sandbox ("" "
... D foo
... F foo / bar asdf
... L baz -> foo / bar
... "" ")
>>> ls ()
l baz -> foo / bar
d foo
f foo / bar asdf
Veja o fs.txt arquivo encontrado com o código-fonte para mais informações, incluindo como configurar e derrubar testes usando caixas de proteção do sistema de arquivos.
instalação de scripts que podem ser chamadas
Algumas funcionalidades um pode querer testar faz uso de programas externos, como um pager ou um editor de texto. O módulo tl.testing.script fornece utilitários que instalam os scripts de simulação simples em locais onde o código a ser testados vai encontrá-los. Eles levam uma seqüência de código Python e criar um script que define o caminho Python para coincidir com o teste e executa o código.
Esta é a forma como um script tais simulada pode ser usado em um teste doc:
>>> From importação tl.testing.script instalar
>>> Script_path = instalar ("print 'Um simples script'.")
>>> Open (script_path) .Leia print ()
#! ...
sys importação
sys.path [:] = [...]
print 'Um script simples. "
>>> Subprocess importação
>>> Sub = subprocess.Popen (script_path, shell = True, stdout = subprocess.PIPE)
>>> Stdout, stderr = sub.communicate ()
>>> Print stdout
Um script simples.
Veja o script.txt arquivo encontrado com o código-fonte para outras possibilidades como instalar e acessar os scripts de simulação, bem como a forma de derrubar os testes usando scripts simulados.
o conteúdo gráfico de superfícies Cairo-testando Doc
Embora seja simples e direta para comparar o conteúdo de duas superfícies Cairo em código Python, lidar com gráficos está além de testes doc. No entanto, o pacote manuel pode ser usado para extrair os casos mais gerais de teste a partir de um documento de texto, enquanto que permite misturá-las com testes doc de uma forma natural.
O módulo tl.testing.cairo fornece uma fábrica conjunto de testes que usa manuel para executar testes gráficos formulados como figuras de texto reestruturado. A legenda de uma figura é suposto ser uma expressão Python literal cujo valor é uma superfície cairo, e sua imagem é usada como a expectativa de teste.
É assim que uma superfície pode ser comparada com uma imagem esperada num ensaio doc:
>>> Cairo importação
>>> From pkg_resources resource_filename importação
>>> Imagem = resource_filename ('tl.testing', 'testimages / correct.png')
.. :: Figura tl / testing / testimages / correct.png
& Nbsp; `` cairo.ImageSurface.create_from_png (imagem) ``
Veja o cairo.txt arquivo encontrado com o código-fonte para mais informações e documentação da saída de teste possível.
Como trabalhar com threads no código de teste
A classe TestCase norma não recolher erros e falhas que ocorreram em outros tópicos do que o principal. O módulo tl.testing.thread oferece aulas de rosca e uma classe ThreadAwareTestCase para permitir apenas que, assim como algumas outras conveniências para os testes que tratam de tópicos: prevenção exceções não tratadas esperadas em threads de ser impresso com a saída do teste, tópicos relatando deixado para trás por um teste, execução de código em uma thread daemon, unindo fios e contando os tópicos iniciados durante o tempo de execução do teste:
>>> Tempo de importação
>>> Tl.testing.thread importação
>>> Class SampleTest (tl.testing.thread.ThreadAwareTestCase):
...
... Def test_error_in_thread_should_be_reported (self):
... Com tl.testing.thread.ThreadJoiner (1):
... Self.run_in_thread (lambda: 1/0)
...
... Def test_active_count_should_count_only_new_threads (self):
... Com tl.testing.thread.ThreadJoiner (1):
... Self.run_in_thread (lambda: time.sleep (0,1))
... Self.assertEqual (1, self.active_count ())
Self.assertEqual ... (0, self.active_count ())
>>> Unittest importação
>>> Run (unittest.makeSuite (SampleTest))
================================================== ====================
ERROR: test_error_in_thread_should_be_reported (__builtin __ SampleTest.)
-------------------------------------------------- --------------------
Traceback (most recent call last):
& Nbsp; ...
ZeroDivisionError: divisão inteira ou modulo por zero
-------------------------------------------------- --------------------
Ran 2 testes em N.NNNs
FALHA (erros = 1)
Consulte o arquivo thread.txt encontrado com o código fonte para maiores detalhes sobre a classe ThreadAwareTestCase.
A construção de conjuntos de testes que usam manuel
Como manuel oferece algumas funcionalidades poderosas, além de doctests padrão, conjuntos de testes manuel são colocados de forma ligeiramente diferente dos padrões. O módulo tl.testing.doctest implementa uma fábrica DocFileSuite que pode ser usado como o padrão, mas cria um conjunto de testes usando manuel e permite uma configuração adicional relacionado com manuel, entre eles a capacidade de interpretar as notas de rodapé que costumavam ser feito usando o preterido zope.testing.doctest:
>>> Sample_txt = write ('sample.txt', "" "
... [#footnote] _
... >>> X
... 1
...
... .. [#footnote]
... >>> X = 1
... "" ")
>>> From tl.testing.doctest DocFileSuite importação
>>> prazo (DocFileSuite (sample_txt, notas de rodapé = true))
-------------------------------------------------- --------------------
Ran um teste em N.NNNs
OK
>>> Sample_txt = write ('sample.txt', "" "
... .. Code-block :: python
X = 1 ...
...
... >>> X
... 1
... "" ")
>>> Manuel.codeblock importação
>>> Run (DocFileSuite (sample_txt, manuel = manuel.codeblock.Manuel ()))
-------------------------------------------------- --------------------
Ran um teste em N.NNNs
OK
Requisitos :
- Python
Comentários não encontrado