Pytest Tutorial: Como usar asserções no Pytest

Asserções são uma ferramenta vital em testes de software. Isso pode nos ajudar a julgar se a saída real do programa em teste atende às expectativas, garantindo assim a qualidade do teste e a robustez do código. pytest é uma estrutura de teste Python popular que fornece uma variedade de funções de asserção. Este artigo apresentará em detalhes o uso, regras, sintaxe, uso primário, uso avançado, habilidades especiais e precauções de asserções pytest, para ajudá-lo a usar melhor o pytest para software teste.

regras de asserção

Antes de introduzir as asserções do pytest, vamos dar uma olhada no que são asserções. Asserções são alguma lógica de julgamento adicionada ao código de teste para julgar se a saída real do programa em teste está de acordo com o resultado esperado. Se a saída real não for a esperada, a asserção lança uma exceção e o teste falha; caso contrário, o teste passa.

As regras para asserções pytest são as seguintes:

  • Se a expressão for False, a asserção falha e uma exceção AssertionError é lançada;
  • Se a expressão for True, a asserção é bem-sucedida e o teste passa;
  • Se assert notuma expressão for usada, a asserção falhará e o teste falhará quando a expressão for True;
  • Se assert <expression1> == <expression2>forem usadas expressões, a asserção será bem-sucedida quando os valores das duas expressões forem iguais e falhará caso contrário.

sintaxe assertiva

pytest usa assertpalavras-chave como início da sintaxe de asserção, seguidas por expressões, por exemplo:

assert 1 + 1 == 2

A declaração de afirmação acima significa julgar se 1+1 é igual a 2. Se for igual, o teste passa, caso contrário, o teste falha e uma exceção AssertionError é lançada.

Uso básico de asserções

No pytest, a afirmação mais simples é usar assertpalavras-chave mais uma expressão, por exemplo:

def test_add():
    assert 1 + 1 == 2

O código acima indica que uma função de teste chamada está definida test_adde uma asserção é adicionada dentro da função para determinar se 1+1 é igual a 2. Depois de executar a função de teste, o pytest executará automaticamente a asserção e exibirá o resultado do teste. Se a asserção for bem-sucedida, ela produzirá PASSED, caso contrário, produzirá FAILEDe fornecerá uma mensagem de erro.

Uso avançado de assertions

Além de julgamentos iguais simples, o pytest também fornece uma série de outros tipos de afirmações, incluindo:

  • assert <expression> != <expression>: Determine se os valores de duas expressões não são iguais;
  • assert <expression> > <expression>: Determina se o valor da primeira expressão é maior que o valor da segunda expressão;
  • assert <expression> < <expression>: Determina se o valor da primeira expressão é menor que o valor da segunda expressão;
  • assert <expression> >= <expression>: Determina se o valor da primeira expressão é maior ou igual ao valor da segunda expressão;
  • assert <expression> <= <expression>: Determina se o valor da primeira expressão é menor ou igual ao valor da segunda expressão;
  • assert <expression> in <expression>: Determina se o valor da primeira expressão está incluído na segunda expressão;
  • assert <expression> not in <expression>: Determina se o valor da primeira expressão não está incluído na segunda expressão;
  • assert <expression> is <expression>: Determina se dois objetos são o mesmo objeto;
  • assert <expression> is not <expression>: Determina se dois objetos não são o mesmo objeto;
  • assert <expression>: Determina se o valor da expressão é True;
  • assert not <expression>: Determina se o valor da expressão é False;
  • assert <expression1> == <expression2>: Determina se os valores de duas expressões são iguais;
  • assert <expression1> != <expression2>: Determine se os valores de duas expressões não são iguais;
  • assert <expression1> is None: Determina se o valor da expressão é Nenhum;
  • assert <expression1> is not None: determine se o valor da expressão não é Nenhum.

habilidades especiais

Além da sintaxe e regras básicas de asserção acima, o pytest também fornece algumas técnicas especiais para facilitar nosso melhor uso de asserções:

  1. Mostrar informações mais detalhadas quando uma asserção falha

Às vezes, precisamos gerar mais informações quando uma asserção falha para facilitar a depuração. A sintaxe fornecida pelo pytest assert <expression>, messagepode exibir informações da mensagem quando a asserção falha, por exemplo:

def test_add():
    assert 1 + 1 == 3, "1+1应该等于3"

A mensagem de erro que o pytest produzirá quando uma asserção falhar assert 2 == 3 : 1+1应该等于3. Isso nos ajuda a localizar rapidamente os erros.

  1. Afirme várias condições

Às vezes, precisamos afirmar se várias condições são atendidas ao mesmo tempo, podemos usar pytest assert <expression> and <expression>ou assert <expression> or <expression>sintaxe. Por exemplo:

def test_add():
    a = 1+1
    b = 2+2
    assert a == 2 and b == 4

O código acima indica que é necessário afirmar se a é igual a 2 e se b é igual a 4 ao mesmo tempo. Se ambas as condições forem atendidas, o teste passa; caso contrário, o teste falha.

  1. Exceção de declaração

Às vezes, precisamos testar se uma função pode lançar corretamente uma exceção quando um parâmetro inválido é inserido. pytest fornece assert raises(Exception, <expression>)sintaxe para testar se um determinado tipo de exceção é lançado. Por exemplo:

def test_division():
    with pytest.raises(ZeroDivisionError):
        1 / 0

O código acima serve para testar se uma exceção pode ser lançada corretamente quando o divisor é 0 ZeroDivisionError. Se puder lançar, o teste passa; caso contrário, o teste falha.

Precauções

Por fim, vamos ver algumas coisas que você deve saber ao usar o pytest para fazer asserções:

  1. As declarações de asserção devem ser colocadas dentro da função de teste.

  2. Se você usar pytest.raises()sintaxe para testar exceções, precisará colocar o código de exceção withdentro da instrução.

  3. Evite usar instruções em funções de teste print(), pois elas podem ser confundidas com a saída gerada pelo pytest.

  4. Ao afirmar, tente garantir que a expressão seja concisa e clara e evite julgamentos lógicos complexos.

  5. Emita informações mais detalhadas quando a asserção falhar para facilitar a localização de erros.

  6. Ao afirmar, tente verificá-lo com antecedência para evitar erros que afetarão os resultados do teste posteriormente.

  7. Tente usar várias funções de teste pequenas em vez de uma função de teste grande para melhor organização e gerenciamento de casos de teste.

Resumindo, usar o pytest para fazer assert é um trabalho muito importante que pode nos ajudar a garantir a qualidade do teste de software e a robustez do código. Usando a sintaxe e as técnicas de asserção razoavelmente e prestando atenção para evitar alguns erros comuns, podemos realizar testes de software com mais eficiência e precisão.

Supongo que te gusta

Origin blog.csdn.net/weixin_40025666/article/details/131220748
Recomendado
Clasificación