Asset
# file.py
def function(x):
return x + 1
# test_file.py
import file_dir.file as t
def test_function():
result = t.function(1)
assert result == 2
Class
# file.py
class Square:
def __init__(self, length):
self.length = length
def width(self):
return self.length ** 2
# test_file.py
from file_dir.file import Square
class TestSquare:
def setup_method(self, method):
print(f"Setting up for {method.__name__}")
self.square = Square(length=2)
def teardown_method(self, method):
print(f"Tearing down after {method.__name__}")
def test_width(self):
result = self.square.width(2)
assert result == 4
Fixture
# file.py
class Square:
def __init__(self, length):
self.length = length
def width(self):
return self.length ** 2
# conftest.py or in test_file.py
import pytest
from file_dir.file import Square
@pytest.fixture
def square_fixture():
return Square(length=2)
# test_file.py
import pytest
class TestSquare:
def test_width(self, square_fixture):
result = square_fixture.width()
assert result == 4
Scope
# test_file.py
@pytest.fixture(scope='module')
def setup_module():
yield
"""
@pytest.fixture(scope='fuction')
@pytest.fixture(scope='class')
@pytest.fixture(scope='session')
"""
Marking
import pytest
@pytest.mark.slow
def test_slow_function():
assert True
@pytest.mark.skip(reason="Function not implemented")
def test_not_implement():
assert True
"""
@pytest.mark.skipif(condition=True, reason="Condition is True")
@pytest.mark.xfail
@pytest.mark.performance
@pytest.mark.smoke
"""
Parametrized
import pytest
@pytest.mark.parametrize("input, expected", [(1, 2), (2, 4)])
def test_multiply_by_two(input, expected):
result = input * 2
assert result == expected
Exception
import pytest
def test_exception():
with pytest.raises(ValueError):
raise ValueError("This is value ERROR!")