oktatas:programozas:python:unittest
Tartalomjegyzék
unittest
- Szerző: Sallai András
- Copyright © 2020, Sallai András
- Szerkesztve: 2024
- Licenc: CC BY-SA 4.0
- Web: https://szit.hu
A unittest
A unittest egy Python programozói könyvtár, automatizált tesztek létrehozására.
Dokumentáció:
A unittest használata
- haromszog.py
def calcArea(base, height): return base*height/2
- haromszog_test.py
import haromszog import unittest class TestHaromszog(unittest.TestCase): def testCalcAreaNormal(self): self.assertEqual(haromszog.calcArea(30, 35), 525.0, 'Az eredmény 525.0 kell legyen') def testCalcAreaLowLeft(self): self.assertEqual(haromszog.calcArea(1, 35), 17.5, 'Az eredmény 17.0 kell legyen') if __name__ == "__main__": unittest.main()
A függvények kötelezően „test” szóval kell kezdődjenek!
def test_valami(): pass
Kötelező:
if __name__ == "__main__":
Egyszerűen futtassuk a programot.
Igaz vagy hamis
#... def test_calcArea_with_float_values(self): self.assertTrue(type(calcArea(4.5, 5.5)) == float, 'Az eredmény float kell legyen, ha az alap 4.5 és a magasság 5.5')
Tesztek átlépése
@unittest.skip('Ez most ne fusson') def test_calcArea_in_4_5_to_10(self): self.assertEqual(calcArea(4, 5), 10, 'Az eredmény 10 kell legyne')
from haromszog import calcArea import unittest class TestHaromszog(unittest.TestCase): @unittest.skip('Ez most ne fusson') def test_calcArea_in_4_5_to_10(self): self.assertEqual(calcArea(4, 5), 10, 'Az eredmény 10 kell legyne') def test_calcArea_with_zero_base(self): self.assertEqual(calcArea(0, 5), 0, 'Az eredmény 0 kell legyen, ha az alap 0') if __name__ == '__main__': unittest.main()
A futtatás csak akkor működik „Play” gombbal, ha a tesztelendő fájl nincs külön könyvtárban.
Ilyen esetben futtassuk parancssorból vagy VSCode-ban a „Testing” eszközzel.
Strukturált könyvtár
app01/ |-app/ | `-triangle.py `-tests/ `-test_triangle.py
- app/triangle.py
def calcArea(base, height): return (base * height) / 2
- tests/test_triangle.py
from app.triangle import calcArea import unittest class TestTriangle(unittest.TestCase): def test_bemenet_30_35(self): actual = calcArea(30, 35) expected = 525; self.assertEqual(actual, expected)
Futtatás:
python3 -m unittest test/test_triangle.py
VSCode
VSCode-ban használhatjuk a futtatást, de akár használhatjuk a „Testing” eszközt.
Lépések:
- Kattintsunk a lombikra
- „Configure Python Tests” gomb
- Válasszuk ki: „unittest Standard Python test framework”
- . Root directory
- *test.py
Beállítás után kapsz egy fájlt:
- .vscode/settings.json
Strukturált könyvtár
app01/ |-app/ | `-triangle.py `-test/ `-test_triangle.py
{ "python.testing.unittestArgs": [ "-v", "-s", "./test", "-p", "test*.py" ], "python.testing.pytestEnabled": false, "python.testing.unittestEnabled": true, }
from app.triangle import calcArea import unittest class TestTriangle(unittest.TestCase): def test_bemenet_30_35(self): actual = calcArea(30, 35) expected = 525; self.assertEqual(actual, expected)
Ha VSCode-ból futtatjuk nem szükséges a if blokkjában a unittest.main() a fájl végén!
Extra útvonal használata
{ "python.testing.unittestArgs": [ "-v", "-s", "./test", "-p", "test*.py" ], "python.testing.pytestEnabled": false, "python.testing.unittestEnabled": true, "python.analysis.extraPaths": [ "./app" ] }
Extra útvonal esetén nem szükséges megadni az src könyvtárat.
from triangle import calcArea import unittest class TestTriangle(unittest.TestCase): def test_bemenet_30_35(self): actual = calcArea(30, 35) expected = 525; self.assertEqual(actual, expected)
oktatas/programozas/python/unittest.txt · Utolsó módosítás: 2024/11/20 15:24 szerkesztette: admin