Наследование тестовых случаев в носовых тестах Python

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

Итак, просто чтобы понять, как это работает, я попытался смоделировать следующее, используя 2 класса NoseTesting и NoseTestingInherit.

Когда я запускаю это:

  1. Я не вижу печатаемого оператора печати.
  2. Когда я запускаю код, я получаю следующий результат:

    ----------------------------------------------------------------------
    Ran 0 tests in 0.000s
    

Я не уверен, какой метод тестирования выполнялся — это test_this_method_dup или test_this_method?

class NoseTesting():
    def test_this_method_dup():
        print "Test this method"

class NoseTestingInherit(NoseTesting):
    def test_this_method():
        print "Test this method"

Новый код:-

import unittest
class NoseTesting(unittest.TestCase):
    def test_this_method_dup(self,):
        print "Test this method"


class NoseTestingInherit(NoseTesting):
    def test_this_method(self,):
        print "Test this method"

Выход :

test_this_method_dup (nosetesting.NoseTesting) ... ok
test_this_method (nosetesting.NoseTestingInherit) ... ok
test_this_method_dup (nosetesting.NoseTestingInherit) ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.003s

OK

person user1050619    schedule 14.08.2015    source источник
comment
Похоже, что ни один из ваших тестовых классов не обнаруживается как имеющий тестовые случаи. Я не знаком с носовыми тестами, вы должны наследовать от какого-то TestCase базового класса или назвать свои тестовые классы каким-то особым образом, чтобы тестовая среда распознала их?   -  person Blckknght    schedule 15.08.2015


Ответы (2)


Как сказал @IanAuld, nosetest не обнаружил ваши тесты. Согласно вашему примеру, вам не нужно явно переписывать метод, если вы не переопределяете метод, поскольку он неявно наследуется.

class NoseTesting(unittest.TestCase):
    def test_this_method_dup(self):
        print "Test this method"

class NoseTestingInherit(NoseTesting):
    # implicitly inherit test_this_method_dup()
    # self.test_this_method_dup()
person Pie 'Oh' Pah    schedule 14.08.2015
comment
После того, как я унаследовал его, я вижу 3 прогона в своем выводе. Я привел последний код выше... Я не уверен, почему test_this_method_dup запускается дважды. - person user1050619; 15.08.2015
comment
@user1050619 user1050619 Наследование заставляет Nousetest запускать повторяющиеся тесты. Перейдите по этой ссылке erikzaadi.com/2012/09/13/ наследование-в-питоне-юнит-тестах, чтобы использовать магические свойства для игнорирования базовых тестов. - person Pie 'Oh' Pah; 15.08.2015

Из документов nosetest:

Тестовый класс — это класс, определенный в тестовом модуле, который соответствует testMatch или является подклассом unittest.TestCase.

Ваши классы не соответствуют этому шаблону.

person kylieCatt    schedule 14.08.2015