Pytest AttributeError: у объекта 'function' нет атрибута 'test_func' - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь протестировать функцию python, используя pytest, но получаю эту ошибку.

import pytest

class Example:

    def __init__(self):
        pass

    @staticmethod
    def test_func(list_arg):
        return len(list_arg)


@pytest.fixture()
def example_instance():
    return Example()


def test_util_fun():
    empty_val = []

    assert example_instance.test_func(empty_val) == 2

ошибка:

AttributeError: 'function' object has no attribute 'test_func'

версии pytest и python

python 3.7
pytest 4.5.0

1 Ответ

1 голос
/ 27 мая 2019

Вам необходимо передать example_instance в качестве аргумента test_util_fun; он волшебным образом не появляется только потому, что это приспособление:

def test_util_fun(example_instance):
    empty_val = []

    assert example_instance.test_func(empty_val) == 2

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

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

...