import unittestclass TestHomework(unittest.TestCase): def test_2plus2(self): self.assertEqual(2 + 2, 5)if __name__ == "__main__": unittest.main()self.assertEqual(a, b)self.assertTrue(b)self.assertFalse(b)with self.assertRaises(TypeError): s.split(10)def setUp(self): ... - вызывается перед запуском тестаdef tearDown(self): ... - после отработки теста@classmethoddef setUpClass(cls): ... - перед запуском всех тестов@classmethoddef tearDownClass(cls): ... - после отработки всех тестовТестирует функции с именем
test_*, методы test_* в классе Test* или в классе наследнике unittest.TestCase# content of test_sample.pydef inc(x): return x + 1def test_answer(): assert inc(3) == 5======= test session starts ========
platform linux — Python 3.5.2, pytest-3.0.7, py-1.4.32, pluggy-0.4.0
rootdir: $REGENDOC_TMPDIR, inifile:
collected 1 items
test_sample.py F
======= FAILURES ========
_______ test_answer ________
def test_answer():
> assert inc(3) == 5
E assert 4 == 5
E + where 4 = inc(3)
test_sample.py:5: AssertionError
======= 1 failed in 0.12 seconds ========
platform linux — Python 3.5.2, pytest-3.0.7, py-1.4.32, pluggy-0.4.0
rootdir: $REGENDOC_TMPDIR, inifile:
collected 1 items
test_sample.py F
======= FAILURES ========
_______ test_answer ________
def test_answer():
> assert inc(3) == 5
E assert 4 == 5
E + where 4 = inc(3)
test_sample.py:5: AssertionError
======= 1 failed in 0.12 seconds ========
Параметризированный вызов теста:
import pytest@pytest.mark.parametrize("test_input,expected", [ ("3+5", 8), ("2+4", 6), ("6*9", 42),])def test_eval(test_input, expected): assert eval(test_input) == expected