SetUp ja TearDown Unittestissä: Testiympäristöjen Hallinta
Testin neljä vaihetta:
- SetUp: ympäristön valmistelu. Tämä voi sisältää objektien luomisen tietokantaan, järjestelmän tilojen määrittelyn, kuten palveluiden käynnistämisen tai tietokantayhteyksien asettamisen;
- Act: testattavan funktion tai metodin suoritus;
- Assert: tulosten tarkistus ja vertailu odotettuihin arvoihin;
- TearDown: siivous jokaisen testin jälkeen. Tämä varmistaa, että ympäristön muutokset eivät vaikuta seuraaviin testeihin.
SetUp ja tearDown ovat valinnaisia vaiheita.
SetUp- ja TearDown-metodien toteutus
Unittestin setUp- ja tearDown-metodit ovat instanssimetodeja, jotka kutsutaan ennen jokaista testimetodia ja sen jälkeen.
Tarkastellaan Book-luokkaa, jossa on mukautetut __repr__- ja sale-metodit.
class Book:
def __init__(self, title, author, amount):
self.title = title
self.author = author
self.amount = amount
def __repr__(self):
return f"<Book {self.title}, written by {self.author}, {self.amount} pieces>"
def sale(self):
if self.amount > 0:
self.amount -= 1
else:
return "This book sold out"
Seuraavaksi määritellään testitapaukset TestBook-luokan sisällä.
import unittest
class TestBook(unittest.TestCase):
def setUp(self):
print("Setting up the environment for each test.")
self.book = Book("1984", "George Orwell", 2)
def tearDown(self):
print("Cleaning up after each test.")
del self.book
def test_sale(self):
self.book.sale()
assert self.book.sale() == "This book sold out"
def test_book_repr(self):
self.assertEqual(repr(self.book), "<Book 1984, written by George Orwell, 2 pieces>")
Kun test_sale-tapaus on suoritettu, kirjojen määrä palautetaan alkuperäiseen arvoon test_book_repr-testiä varten, koska setUp-metodi suoritetaan ennen jokaista testiä.
SetUp ja tearDown metodi-tasolla takaavat, että jokainen testi suoritetaan puhtaassa ympäristössä, mikä tekee testeistä ennustettavia ja toisistaan riippumattomia.
SetUpClass- ja TearDownClass-metodien toteutus
Nämä ovat luokkametodeja, jotka suoritetaan kerran koko luokalle testisarjan alussa ja lopussa.
class TestBook(unittest.TestCase):
@classmethod
def setUpClass(cls):
"""This code will run before all tests"""
print("Setting up the environment for all tests.")
cls.book = Book("1984", "George Orwell", 2)
@classmethod
def tearDownClass(cls):
"""This code will run after all tests"""
print("Cleaning up after all tests.")
def test_sale(self):
self.book.sale()
assert self.book.sale() == "This book sold out"
def test_book_repr(self):
self.assertEqual(repr(self.book), "<Book 1984, written by George Orwell, 2 pieces>")
# An AssertionError will occur because the amount was changed in the
# 'test_sale' and the book was not updated prior to this test.
SetUp ja tearDown luokkatasolla vähentävät resurssien valmistelun ja siivouksen aiheuttamaa kuormitusta, kun kyseessä ovat kalliit resurssit.
Swipe to start coding
Harjoittele setUp- ja tearDown-metodien käyttöä unittest-kirjastossa testaamalla Book-luokkaa.
- Määritä testiluokka nimeltä
TestBook, joka perii luokastaunittest.TestCase. - Toteuta
setUp-metodi, joka luoBook-instanssin otsikolla'1984', kirjoittajalla'George Orwell'ja määrällä2. Aseta se muuttujaanself.book. - Toteuta
tearDown-metodi, joka poistaaself.book-instanssin. - Lisää metodi nimeltä
test_sale, joka:- Kutsuu
sale-metodiaself.book-oliolle kahdesti; - Varmistaa, että toinen kutsu palauttaa arvon
'This book sold out'.
- Kutsuu
- Lisää metodi nimeltä
test_book_repr, joka varmistaa, ettäself.book-olion merkkiesitys on'<Book 1984, written by George Orwell, 2 pieces>'. - Käytä täsmälleen näitä funktio- ja luokkanimiä, jotta testit menevät läpi.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Mahtavaa!
Completion arvosana parantunut arvoon 3.13
SetUp ja TearDown Unittestissä: Testiympäristöjen Hallinta
Pyyhkäise näyttääksesi valikon
Testin neljä vaihetta:
- SetUp: ympäristön valmistelu. Tämä voi sisältää objektien luomisen tietokantaan, järjestelmän tilojen määrittelyn, kuten palveluiden käynnistämisen tai tietokantayhteyksien asettamisen;
- Act: testattavan funktion tai metodin suoritus;
- Assert: tulosten tarkistus ja vertailu odotettuihin arvoihin;
- TearDown: siivous jokaisen testin jälkeen. Tämä varmistaa, että ympäristön muutokset eivät vaikuta seuraaviin testeihin.
SetUp ja tearDown ovat valinnaisia vaiheita.
SetUp- ja TearDown-metodien toteutus
Unittestin setUp- ja tearDown-metodit ovat instanssimetodeja, jotka kutsutaan ennen jokaista testimetodia ja sen jälkeen.
Tarkastellaan Book-luokkaa, jossa on mukautetut __repr__- ja sale-metodit.
class Book:
def __init__(self, title, author, amount):
self.title = title
self.author = author
self.amount = amount
def __repr__(self):
return f"<Book {self.title}, written by {self.author}, {self.amount} pieces>"
def sale(self):
if self.amount > 0:
self.amount -= 1
else:
return "This book sold out"
Seuraavaksi määritellään testitapaukset TestBook-luokan sisällä.
import unittest
class TestBook(unittest.TestCase):
def setUp(self):
print("Setting up the environment for each test.")
self.book = Book("1984", "George Orwell", 2)
def tearDown(self):
print("Cleaning up after each test.")
del self.book
def test_sale(self):
self.book.sale()
assert self.book.sale() == "This book sold out"
def test_book_repr(self):
self.assertEqual(repr(self.book), "<Book 1984, written by George Orwell, 2 pieces>")
Kun test_sale-tapaus on suoritettu, kirjojen määrä palautetaan alkuperäiseen arvoon test_book_repr-testiä varten, koska setUp-metodi suoritetaan ennen jokaista testiä.
SetUp ja tearDown metodi-tasolla takaavat, että jokainen testi suoritetaan puhtaassa ympäristössä, mikä tekee testeistä ennustettavia ja toisistaan riippumattomia.
SetUpClass- ja TearDownClass-metodien toteutus
Nämä ovat luokkametodeja, jotka suoritetaan kerran koko luokalle testisarjan alussa ja lopussa.
class TestBook(unittest.TestCase):
@classmethod
def setUpClass(cls):
"""This code will run before all tests"""
print("Setting up the environment for all tests.")
cls.book = Book("1984", "George Orwell", 2)
@classmethod
def tearDownClass(cls):
"""This code will run after all tests"""
print("Cleaning up after all tests.")
def test_sale(self):
self.book.sale()
assert self.book.sale() == "This book sold out"
def test_book_repr(self):
self.assertEqual(repr(self.book), "<Book 1984, written by George Orwell, 2 pieces>")
# An AssertionError will occur because the amount was changed in the
# 'test_sale' and the book was not updated prior to this test.
SetUp ja tearDown luokkatasolla vähentävät resurssien valmistelun ja siivouksen aiheuttamaa kuormitusta, kun kyseessä ovat kalliit resurssit.
Swipe to start coding
Harjoittele setUp- ja tearDown-metodien käyttöä unittest-kirjastossa testaamalla Book-luokkaa.
- Määritä testiluokka nimeltä
TestBook, joka perii luokastaunittest.TestCase. - Toteuta
setUp-metodi, joka luoBook-instanssin otsikolla'1984', kirjoittajalla'George Orwell'ja määrällä2. Aseta se muuttujaanself.book. - Toteuta
tearDown-metodi, joka poistaaself.book-instanssin. - Lisää metodi nimeltä
test_sale, joka:- Kutsuu
sale-metodiaself.book-oliolle kahdesti; - Varmistaa, että toinen kutsu palauttaa arvon
'This book sold out'.
- Kutsuu
- Lisää metodi nimeltä
test_book_repr, joka varmistaa, ettäself.book-olion merkkiesitys on'<Book 1984, written by George Orwell, 2 pieces>'. - Käytä täsmälleen näitä funktio- ja luokkanimiä, jotta testit menevät läpi.
Ratkaisu
Kiitos palautteestasi!
single