2016-05-12 9 views
0

Aus irgendeinem Grund habe ich Probleme, Befehlszeilenargumente mit meinen Unit Tests zu verwenden.Wie benutzt man ein Kommandozeilenargument im Unittest?

Einfach gesagt, alles was ich will, ist env mit all meinen Tests zu verwenden. Was mache ich hier falsch?

# -*- 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) 

Fehler:

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

I Ich weiß nicht, was du falsch machst, erzählst du uns. Sie müssen die Seite [mcve] erneut lesen, insbesondere den Teil über den Fehler. –

+0

Also übergebe ich das Argument richtig? – david

+0

Ich weiß nicht, erhalten Sie irgendwelche Fehler? –

Antwort

0

ich wirklich weiß nicht, warum ... Aber Umstellung auf das funktioniert Haupt:

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) 

beachten Sie, dass:

mySmokeTest.env = args.env does not work