py.test: как получить имя текущего теста из метода установки?

t = timeit.Timer("foo()", "from __main__ import foo")

Поскольку timeit не имеет ваших данных в области видимости.

23
задан Jan-Philip Gehrcke 18 July 2013 в 15:10
поделиться

4 ответа

Вы также можете сделать это, используя Запрос Fixture , например:

def test_name1(request):
    testname = request.node.name
    assert testname == 'test_name1'
62
ответ дан Sanyash 18 July 2013 в 15:10
поделиться

Попробуйте type(self).__name__, возможно?

0
ответ дан kindall 18 July 2013 в 15:10
поделиться

Методы setup и teardown кажутся устаревшими методами для поддержки тестов, написанных для других платформ, например, нос. Нативные pytest методы называются setup_method, а также teardown_method, которые получают в качестве аргумента текущий выполняемый метод тестирования. Следовательно, то, что я хочу достичь, можно записать так:

class TestSomething(object):

    def setup_method(self, method):
        print "\n%s:%s" % (type(self).__name__, method.__name__)

    def teardown_method(self, method):
        pass

    def test_the_power(self):
        assert "foo" != "bar"

    def test_something_else(self):
        assert True

Выходные данные py.test -s тогда:

============================= test session starts ==============================
platform linux2 -- Python 2.7.3 -- pytest-2.3.3
plugins: cov
collected 2 items 

test_pytest.py 
TestSomething:test_the_power
.
TestSomething:test_something_else
.

=========================== 2 passed in 0.03 seconds ===========================
14
ответ дан Jan-Philip Gehrcke 18 July 2013 в 15:10
поделиться

У вас может быть несколько тестов, в этом случае ...

test_names = [n for n in dir(self) if n.startswith('test_')]

... даст вам все функции и переменные экземпляра, которые начинаются с "test_" в self. Пока у вас нет переменных с именем «test_something», это будет работать.

Вы также можете определить метод setup_method(self, method) вместо setup(self), и он будет вызываться перед каждым вызовом метода тестирования. Используя это, вы просто даете каждый метод в качестве параметра. См. http://pytest.org/latest/xunit_setup.html

.
1
ответ дан ejk314 18 July 2013 в 15:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: