2017-07-15 277 views
0

我已經知道如何在pytest中傳遞命令行參數。 我想打印或在我的setup_class()或setup_module()中對作爲命令行參數傳遞的變量進行一些基本驗證。我們可以在pytest中的setup_module()或setup_class中打印命令行參數嗎?

我可以在測試方法中訪問這些變量,但不能在setup_class或setup_module中訪問這些變量。這甚至有可能嗎?

我想要做這樣的事情...

conftest.py

def pytest_addoption(parser): 
    parser.addoption('--user',action='store', help='email id Ex: [email protected]') 

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 

回答

0

在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 

現在你可以從剛剛導入conftestoption

from conftest import option 

class Test_ABC: 

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

我很抱歉,但我不明白我的test.py文件應該是怎麼樣的。你能否詳細說明一下。謝謝 –

+0

我擴展了答案。 – phd

+0

我運行測試時出現此錯誤。你能告訴我我錯在哪裏嗎?用於py.test [options] [file_or_dir] [file_or_dir] [...]' 'py.test:py.test test_2.py --user =「[email protected]」-vvs' '錯誤:無法識別的參數:--user = mkunja @ infoblox.com' 'inifile:None' 'rootdir:/ mnt/home/mverma/manoj/py' –

相關問題