Per fare un esempio leggermente inventato, diciamo che voglio provare che una funzione restituisce due numeri e che il primo è più piccolo del secondo:
def test_length():
result = my_function()
assert len(result) == 2
def test_order()
a, b = my_function()
assert a < b
Qui, se test_length
fallisce, allora test_order
fallirà anche. È una buona pratica scrivere test_length
o saltare?
EDIT: nota che in questa situazione, entrambi i test sono per lo più indipendenti l'uno dall'altro, ognuno può essere eseguito in modo isolato o potrebbe essere eseguito in ordine inverso, questo non ha importanza. Quindi nessuna di queste precedenti domande
- Come devo testare la funzionalità di una funzione che utilizza altre funzioni in essa?
- Ho bisogno di un unit test se ho già un test di integrazione?
- Come strutturare i test in cui un test è la configurazione di un altro test?
- Come gestire la dipendenza dal successo tra test unitari
è un duplicato di quello sopra.
A
chiama B
e restituisce lo stesso risultato, dovresti testare entrambi A
e B
". Si tratta più delle sovrapposizioni dei test piuttosto che delle funzioni sotto test. (Anche se è confuso come sono attualmente chiamati).
lambda: type('', (), {'__len__': lambda self: 2})()
passerà la prima, ma non la seconda.