2013-07-13 5 views
4

В документации по протоколу pytest указано, что py.test file_name является стандартным способом запуска тестовых примеров pytest. Но я развиваюсь в Emacs с помощью скрипта Python на левой панели и интерпретатора Python на правой панели.Выполнение тестовых примеров pytest из тестового сценария

Мой рабочий является то, что я внести изменения в сценарий Python, CTRL-C C его (так что обновленные изменения отправляются в РЕПЛ) и перейти к РЕПЛ (CTRL-O), таким образом протестировать обновленный код. Было бы неплохо, если бы я мог внести изменения в свой тестовый пример слева, перейти на правый экран REPL и выполнить обновленный тестовый пример.

Есть ли способ запуска тестовых ящиков pytest из REPL или внутри скрипта, в отличие от нереста оболочки и выполнения команды pytest?

EDIT: Как и в сторону, я попробовать использовать функцию main из pytest и назвав его в сценарии, но по какой-то смешной причине, изменения не забирается, если я не убить старый REPL и начать новую , Это не происходит с другим скриптом Python, поэтому я уверен, что это связано с pytest. Вот код:

def test_add(): 
    assert myadd(1, 2) == 3 

if __name__ == '__main__': 
    pytest.main() 
+0

Я считаю pytest.main() не испытывать то, что у вас есть внутри РЕПЛ, потому что он запускает регулярное py.test бегуна, который пытается загрузить тесты из ожидаемых тестов папке и в соответствии с любыми соглашениями об именах –

+0

@ Conrad.Dean: Я думаю, что речь идет не о REPL. У меня создалось впечатление, что pytest заберет последний код для моего скрипта перед запуском теста. Но кажется, что тестовый код после загрузки никогда не перезагружается независимо от изменений, внесенных в тестовый скрипт. Действительно странно ... – sasuke

ответ

0

Следующий комментарий от @ Conrad.Dean. Кажется, тестирование в какой-то pytest.py является своего рода полезным соглашением. Ниже приведен пример, иллюстрирующий роль if __name__ == '__main__':

def myadd(first, second): 
    return first + second 

def test_add(): 
    assert myadd(1, 2) == 3 

if __name__ == '__main__': 
    print("Running test_add") 
    test_add() 
+0

К сожалению, не работает. «Print» выполняется, но тестовые примеры не выполняются pytest. :( – sasuke

+0

и, кроме того, разве вы не потеряете все заявления о переименовании pytest и другое доброе испытание? –

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