python3-输出__ -main __文件在运行UniteSts时(来自实际程序,而不是UnitSests)



当我运行测试时,如何输出我的 __main__文件打印?我的意思是从该文件打印,而不是UnitSests PRINT。

我有此示例结构(所有文件都在同一目录中):

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 -spython3 -m unittest运行它,但这没有区别,未从main.py输出打印,只有直接在测试文件上定义的prints。这是我得到的:

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

P.S。当然,如果我在不使用测试的情况下运行main.py,则它会正常打印(例如,使用Python shell/解释器并使用sh调用main.py,就像在UnitSests中一样)

sh.python3启动了新过程,并且其输出不会由nose捕获。您可以从中重定向输出打印结果:

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

最新更新