2017-02-16 32 views
1

Я был следующим этим учебником для pytest:pytest не позволяя классы с не-статическими методами

http://doc.pytest.org/en/latest/getting-started.html#grouping-multiple-tests-in-a-class

Но заметил, что если я создаю:

class ComplexTestClass: 
    """ 
    Complex and more nuanced tests for specific sentences 
    """ 
    def test_multiple_sentences(): 

Если я не добавить @staticmethod в в верхней части функций, я получаю сообщение об ошибке в функции, где он не может получить с (), и он становится выделенным красным цветом в моем PyCharm.

Неправильно ли это учебник (который не требует статических методов), или я ошибаюсь и будет staticmethod лишить мои тесты?

ответ

3

Вам нужен self аргумент в методе, если вы не объявляя ему @staticmethod:

def test_multiple_sentences(self): 
+0

согласно 'pytest' Docs, почему у него есть пример он имеет без' self' и без ' _init_'? Моя цель состоит в том, чтобы этот класс вызывался внутри 'pytest' и всех его методов при выполнении моих тестов. Будет ли 'staticmethod' предотвращать это при запуске' pytest -q test_text.py'? –

+1

Точный пример, который вы ссылаетесь на * does *, имеет 'self' в качестве аргумента. Примеры на этой странице без аргумента 'self' - это функции, определенные вне' class', а не методы. Следуйте примеру, к которому вы подключились (т. Е. Не объявляйте свои тестовые методы как '@ staticmethod' и включаете аргумент' self'), и все ваши тестовые примеры должны выполняться. – Billy

+0

Глупый меня. Вы правы. Спасибо. –