如何向py.test添加cli参数?

时间:2014-10-14 18:47:23

标签: python selenium saucelabs

我试图拥有可互换的配置文件,并且我使用py.test将测试套件发送到云端。

当我在终端中使用python main.py --site site1在本地运行它们时,以下工作正常。

我试图找出如何添加cli参数以便它可以与py.test一起使用

我有3个文件。 main,config和site1_config

main.py

if __name__ == "__main__":

parser = argparse.ArgumentParser(description='CLI tests for an environment')
parser.add_argument('--site', nargs='?', help='the site to use for the config')
parser.add_argument('unittest_args', nargs='*')
#Get our property
args = parser.parse_args()
if args.site:
    config.localizeConfig(args.site)
sys.argv[1:] = args.unittest_args

unittest.main(verbosity = 2)

config.py

def localizeConfig(site):
    localizedConfig = __import__(site+'_config');
    # localizedConfig = __import__(site);
    #print dir(localizedConfig)
    props = filter(lambda a: not a.startswith('__'), dir(localizedConfig))
    #Iterate over each property and set it on the config
    for prop in props:
        if prop != 'os' and prop != 'sys' and prop != 'webdriver':
            globals()[prop] = getattr(localizedConfig, prop)
host_url = www.google.com

site1_config.py

host_url = www.yahoo.com

我试图设置一个标志,以便在py.test -n6 --boxed main.py site1时 运行后,site1_config.py会将其内容复制到config.py

我不确定如何使用py.test

用法:py.test [options] [file_or_dir] [file_or_dir] [...] py.test:错误:无法识别的参数:

2 个答案:

答案 0 :(得分:1)

我没有真正得到你想要做的事情,但是为了向py.test检查添加CLI参数: http://pytest.org/latest/example/simple.html

# content of conftest.py 
import pytest

def pytest_addoption(parser):
    parser.addoption("--cmdopt", action="store", default="type1",
        help="my option: type1 or type2")

答案 1 :(得分:1)

与您的unittest.main(verbosity = 2)等效的是pytest.main(['-v'])

注意事项:

  • 在pytest中,我不确定详细程度是否可以选择
  • pytest.main(input)上的某些引用未指定输入必须是列表,但直到今天它必须是列表。

https://docs.pytest.org/en/latest/usage.html