Python3 - вывод файла __main__ при печати юнит-тестов (из реальной программы, а не юнит-тестов) - PullRequest
0 голосов
/ 26 февраля 2019

Как я могу сделать так, чтобы мои __main__ отпечатки файлов выводились при запуске тестов?Я имею в виду распечатки из этого файла, а не распечатки файлов с юнит-тестами.

У меня есть пример структуры (все файлы находятся в одном каталоге):

main.py :

import argparse

print('print me?')  # no output
if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('name')
    args = parser.parse_args()
    print(args.name)  # no output

other.py :

def print_me():
    print('ran print_me')

test.py :

import unittest
import sh
import other


class TestMain(unittest.TestCase):

    def test_main(self):
        print('test_main')  # prints it.
        sh.python3('main.py', 'test123')

    def test_other(self):
        print('test_other')  # prints it.
        other.print_me()

И я запускаю егос python3 -m nose -s или python3 -m unittest, но это не имеет значения, отпечатки не выводятся из main.py, а только те, которые определены непосредственно в тестовом файле.Вот что я получаю:

user@user:~/python-programs/test_main$ python3 -m nose -s
test_main
.test_other
ran print_me
.
----------------------------------------------------------------------
Ran 2 tests in 0.040s

OK

PS Конечно, если я запускаю main.py без использования тестов, он печатается нормально (например, с использованием оболочки / интерпретатора python и вызова main.py с sh).как в юнит-тестах)

1 Ответ

0 голосов
/ 26 февраля 2019

sh.python3 запускает новый процесс, и его вывод не фиксируется nose.Вы можете перенаправить вывод на печать результата из него:

print(sh.python3('main.py', 'test123'))
...