Тестирование программного обеспечения на качество кода

В этой статье мы поговорим о маркерах и фикстурах, которые помогают вывести методы модульного тестирования на более продвинутый уровень. По мере усложнения кода необходимо сделать модульный тест более надежным и исправить все зависимости основного кода.

Маркер Pytest

Обычно они используются для установки метаданных в функциях модульного тестирования, чтобы pytest имел некоторую дополнительную информацию.

Мы обсудим четыре типа маркеров, как показано ниже:

  1. Пропустить: этот маркер используется для пропуска определенного метода тестирования путем применения декоратора pytest.

Пример:

# in this example will skip on test 
import pytest
from add_function import addNumbers

@pytest.mark.skip
def test_num():
    assert addNumbers(1,3) == 4

def test_str():
    assert addNumbers('x', 'y') == 'xy'
    
# output:
test_add.py s.    # here s means a test function at 1st position is skipped

2. Skipif: в этом маркере нам нужно указать в декораторе условие, чтобы метод теста пропустился с параметром причины.

Пример:

import pytest
import sys
from add_function import addNumbers

@pytest.mark.skip()
def test_num():
    assert addNumbers(1,3) == 4

@pytest.mark.skipif(sys.getrefcount('Hello') == (5), reason = "String is equal")
def test_str():
    assert addNumbers('x', 'y') == 'xy'
    
# output:
test_add.py ss    # here ss means two test functions are skipped

3. xfail: этот маркер полезен для обработки метода тестирования в случае возникновения исключения.

Пример:

import pytest
import sys
from add_function import addNumbers

@pytest.mark.skip()
def test_num():
    assert addNumbers(1,3) == 4

def test_num1():
    assert addNumbers(1,3) == 3
    # E assert 4 == 3  # here E means it raised some Exception
    
# output:
# here the first test function is skipped and the second test function is failed 
# because of exception(E)

test_add.py sF   

# to overcome this Exception error, we use the xfail marker.

import pytest
import sys
from add_function import addNumbers

@pytest.mark.skip()
def test_num():
    assert addNumbers(1,3) == 4…