2012-11-07 20 views
7

पर कमांड लाइन तर्कों को समझने के लिए सबसे ज्यादा प्राप्त नहीं हो सकता है इसलिए मैं कुछ कमांड लाइन तर्क के आधार पर विभिन्न वातावरणों पर सेलेनियम परीक्षण चलाने के लिए सबसे ज्यादा प्रयास करने की कोशिश कर रहा हूं। लेकिन यह इस त्रुटि फेंक रहता है:सेटअप

TypeError: setup_class() takes exactly 2 arguments (1 given) 

यह समझने की है कि setup_class 2 तर्क लेता है, लेकिन host पारित नहीं किया जा रहा है लगता है। यहाँ setup_class के लिए कोड है:

def setup_class(cls, host): 
     cls.host = host 

और यहाँ conftest.py फ़ाइल है:

def pytest_addoption(parser): 
    parser.addoption("--host", action="store", default='local', 
     help="specify the host to run tests with. local|stage") 

@pytest.fixture(scope='class') 
def host(request): 
    return request.config.option.host 

क्या अजीब बात है कि host कार्य (ही देख रहे हैं, इसलिए यदि मैं एक test_function और पास करना है पैरामीटर के रूप में होस्ट करें, यह ठीक है), यह केवल setup फिक्स्चर है जो काम नहीं कर रहे हैं।

मैं चारों ओर देखा और यह पाया, pytest - use funcargs inside setup_module लेकिन वह py.test 2.3.2 का उपयोग करते हुए काम किया जाना प्रतीत होता है नहीं है (और यह 2.3 के बाद से पुरानी है।

किसी को भी पता है मैं गलत क्या कर रही हूं? ।

धन्यवाद

उत्तर

1

setup_module/कक्षा/विधि और दोस्तों सीधे pytest जुड़नार के साथ काम नहीं कर सकते हैं। बराबर करने का pytest-2.3 रास्ता autouse fixtures उपयोग करने के लिए है। आप इसे परीक्षण कार्यों के लिए स्पष्ट रूप जुड़नार पारित करने के लिए बेहतर है सकते हैं या कक्षा या मॉड्यूल पर usefixtures marker डालने के लिए।

+0

[यहाँ] (http://pytest.org/latest/fixture.html#working-with-a-module-shared-fixture) यह कहते हैं, "स्थिरता के नाम पर फिर से smtp है और आप कर सकते हैं किसी भी परीक्षण या सेटअप फ़ंक्शन में इनपुट पैरामीटर के रूप में नाम smtp को सूचीबद्ध करके इसके परिणाम तक पहुंचें "। तो मैं इसे सेटअप पर उपयोग कर सकता हूं और ऐसा नहीं, नहीं? और 'ऑटोउस' और 'उपयोग' सभी परीक्षणों को उस कोड को चलाता है, मैं बस इसे स्थापित करना चाहता हूं। – Nacht

+0

मैं आपको जवाब दूंगा। भले ही आपने मेरे विशिष्ट उत्तर का जवाब नहीं दिया, फिर भी आपने मुझे एक काम के रूप में एक विचार दिया। यह अजीब बात है, दस्तावेज़ कहते हैं कि आप इसे कर सकते हैं, लेकिन ऐसा लगता है कि यह मामला नहीं है। वैसे भी, धन्यवाद। – Nacht

+1

आप सही हैं, दस्तावेज़ भ्रामक हैं। या वास्तव में, मैंने बस एक फिक्स अपलोड किया जो "फ़ंक्शन फ़ंक्शन" के साथ "सेटअप फ़ंक्शन" को प्रतिस्थापित करता है। माफ़ कीजिये! – hpk42

19

सेटअप फ़ंक्शंस के अंदर से कमांड लाइन विकल्पों तक पहुंचने के लिए, आप pytest.config ऑब्जेक्ट का उपयोग कर सकते हैं। यहां एक उदाहरण है ... आवश्यकतानुसार अनुकूलित करें।

import pytest 

def setup_module(mod): 
    print "Host is %s" % pytest.config.getoption('host') 
+1

भविष्य के आगंतुकों के लिए, बस स्वीकृत उत्तर छोड़ दें और इसका उपयोग करें। यह काम करता है और स्वीकार किए गए उत्तर से कम कदम उठाता है। – pr4bh4sh