Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:python:unittest

< Python

unittest

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