我们可以在pytest中的setup_module()或setup_class中打印命令行参数吗?

时间:2017-07-15 16:14:35

标签: python python-2.7 pytest

我知道如何在pytest中传递命令行参数。 我想在setup_class()或setup_module()中打印或做一些基本验证,对照作为命令行参数传递的变量。

我能够在测试方法中访问这些变量,但不能在setup_class或setup_module中访问。这甚至可能吗?

我想做这样的事......

conftest.py

def pytest_addoption(parser):
    parser.addoption('--user',action='store', help='email id Ex: abc@infoblox.com')

test_1.py

import pytest

def setup_module():
    print 'Setup Module'
def teardown_module():
    print "Teardown Module"

class Test_ABC:

    def setup_class(cls,request):
        user = request.config.option.user
        print user
        print 'Setup Class'

    def teardown_class(cls,request):
        print 'Teardown Class'

    def test_12(self,request):
        print "Test_12"
        assert 1==1

3 个答案:

答案 0 :(得分:1)

在conftest.py中:

def pytest_addoption(parser):
    """Add the --user option"""
    parser.addoption(
        '-U', '--user',
        action="store", default=None,
        help="The user")

option = None

def pytest_configure(config):
    """Make cmdline arguments available to dbtest"""
    global option
    option = config.option

现在您只需从option导入conftest

from conftest import option

class Test_ABC:

    def setup_class(cls):
        user = option.user
        print user
        print 'Setup Class'

答案 1 :(得分:0)

我有一个类似的用例,最终实现如下:

在conftest.py

import pytest

def pytest_addoption(parser):
    parser.addoption("--testarg", action="store", dest="testarg", default="test", help="testarg help")

def pytest_configure(config):
    pytest.testarg = config.getoption('testarg')

在test_sample.py

import pytest
print pytest.testarg

资源:

  1. https://docs.pytest.org/en/latest/reference.html#_pytest.hookspec.pytest_addoption

答案 2 :(得分:0)

1。首先添加conftest.py并在其中添加2个方法。

http://yourDomain.com

2。然后调用pytest。在您的setupclass或setupmethod中。 喜欢 def pytest_addoption(parser): parser.addoption( "--devicename", action="store", default="test1", help="test1" ) def pytest_configure(config): pytest.devicename = config.getoption('devicename')