2016-02-12 98 views
8

我知道py.test可以测试一个模块,如果我做的:调用pytest只有

py.test mod1.py 

或者,我可以调用内部蟒蛇pytest:

import pytest 
pytest.run(['mod1.py']) 

灿我在python里面做,并让它运行当前模块?我想我可以这样做:

import pytest 
import os 
pytest.main([os.path.basename(__file__)]) 

但不知道这是否是最“pythonic”的方式来做到这一点。谢谢!

+0

你显示的例子是针对一个文件,但是你问的问题是关于模块。请清楚你想要什么 –

回答

7

您的版本不允许向pytest传递额外的参数(例如允许./test_file.py -v)。我想简单地

import sys 


if __name__ == '__main__': 
    pytest.main(sys.argv) 

,似乎这样的伎俩。 sys.argv[0]是脚本名称(即__file__,可能是一个相对路径),所以它限制对脚本的调用,并且sys.argv[1:]包含在命令行上传递的额外参数。

任何更好的想法赞赏!