2016-05-12 2 views
0

По какой-то причине у меня возникают проблемы с использованием аргументов командной строки с моими unittests.Как использовать аргумент командной строки в unittest?

Проще говоря, все, что я хочу, это использовать env со всеми моими испытаниями. Что я здесь делаю неправильно?

# -*- coding: utf-8 -*- 
import argparse 
from selenium import webdriver 
from selenium.webdriver import ActionChains 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.keys import Keys 
import unittest, time, re 

class mySmokeTest(unittest.TestCase): 
    def __init__(self, args): 
     self.env = args.env 

    def setUp(self): 
     self.driver = webdriver.Firefox() 
     self.base_url = "http://google.com" 
     self.verificationErrors = [] 
     self.accept_next_alert = True 

    def test_add_to_cart(self, env): 
     # open base page 
     driver = self.driver      
     driver.get("{0}".format(env)) 

    def tearDown(self): 
     self.driver.quit() 
     self.assertEqual([], self.verificationErrors) 

if __name__ == "__main__": 
    parser = argparse.ArgumentParser() 
    parser.add_argument('env', default='environment to test against') 
    args = parser.parse_args() 
    env = args.env 
    runner = unittest.TextTestRunner() 
    itersuite = unittest.TestLoader().loadTestsFromTestCase(mySmokeTest) 
    runner.run(itersuite) 

ошибка:

self.env = args.env 
AttributeError: 'str' object has no attribute 'env' 
+2

I не знаете, что вы делаете неправильно, расскажите нам. Вам нужно перечитать страницу [mcve], в частности, часть об ошибке. –

+0

Итак, я правильно передаю аргумент? – david

+0

Я не знаю, вы получаете какие-либо ошибки? –

ответ

0

Я на самом деле не знаю, почему ... Но изменение основной на это работает:

if __name__ == "__main__": 
    parser = argparse.ArgumentParser() 
    parser.add_argument('env', default='url to test against') 
    args = parser.parse_args() 
    env=args.env 
    mySmokeTest.env = env 
    runner = unittest.TextTestRunner() 
    itersuite = unittest.TestLoader().loadTestsFromTestCase(mySmokeTest) 
    runner.run(itersuite) 

обратите внимание, что:

mySmokeTest.env = args.env does not work 
Смежные вопросы