2015-09-06 1 views
0

У меня есть три взаимозависимых python functions: F(), г(), и Н(), такие как:Python - Модульное тестирование функций, которые зависят от предыдущих функций исхода (Chained функции)

  • g() зависит по исходу f().
  • h() зависит от результата g().
def f(): 
    ... 

def g(): 
    f() 
    ... 

def h(): 
    g() 
    ... 

К unit test эти функции я использую py.test. В пути я пытаюсь модульного тестирования, я наблюдая некоторую избыточность:

def test_f(): 
    assert f() 

def test_g(): 
    f() 
    assert g() 

def test_h(): 
    g() 
    assert h() 

Как я должен спроектировать Unit Tests, в данном конкретном случае?

+1

Это звучит больше как тесты интеграции, чем модульные тесты. Если вы хотите, вы должны проверить библиотеку mock http://www.voidspace.org.uk/python/mock/compare.html#mock-chained-methods –

ответ

1

Я не уверен, если я правильно вас понял, но если я сделал, то вы можете сделать

def test_functions(): 
    assert f() 
    assert g() 
    assert h() 
+0

Спасибо. Я новичок в «модульном тестировании». Хорошая ли конструкция для тестирования всех функций внутри «той же функции»? Фактически, то, что вы сделали, это именно то, что нужно сделать, но я сомневаюсь в совокупности всех модульных тестов внутри одной и той же тестовой функции (хотя, если «первый тест» терпит неудачу, нет необходимости выполнять «вторую и третью» '). – h4k1m

+1

Если функции действительно зависят друг от друга, как в - нет смысла называть g() без f(), тогда я честно думаю, что это нормально, чтобы поставить их в один и тот же тест, в конце концов, это не будет полезны, чтобы увидеть, что все из них потерпели неудачу только из-за одной из этих функций – DorElias

Смежные вопросы