python - Passing args to nose.runmodule() -


i switched unittest nose able specify concurrent processing , xunit report generation. python file contains several test functions , nontest function test functions call during testing. know tests should automated point no arguments need passed in, when testing. however, want user able change defaults, if wishes. so, use argparse parse arguments. following sample of test script. haven't included several other test functions present in original file.

from selenium import webdriver nose.tools import nottest nose.tools import assert_equals import nose import unittest import argparse import sys  @nottest def open_browser():     browser = eval('webdriver.%s()'%browsertype)     return browser  def test_google_title():     browser = open_browser()     browser.get("http://www.google.com")     assert_equals("google", browser.title)     browser.quit()  def test_yahoo_title():     browser = open_browser()     browser.get("http://www.yahoo.com")     assert_equals("yahoo", browser.title)     browser.quit()  if __name__ == "__main__":     parser = argparse.argumentparser()     parser.add_argument("--browser", choices=['phantomjs', 'chrome'],default='phantomjs')     args, unknown = parser.parse_known_args()     browsertype = args.browser      try:         sys.argv.remove('--browser')         sys.argv.remove(args.browser)     except valueerror:         pass      nose.runmodule() 

i read args.browser browsertype, later used open_browser(). when run,

python test.py --browser 'chrome' -v --with-xunit 

it runs fine.

however, when run,

python test.py --browser 'chrome' -v --with-xunit --processes 2 --process-timeout 10 

it fails error,

traceback (most recent call last):   file "/users/indrajeet/.virtualenv/virtualenv/lib/python2.7/site-packages/nose/case.py", line 197, in runtest     self.test(*self.arg)   file "/users/indrajeet/scripts/test.py", line 15, in test_google_title     browser = open_browser()   file "/users/indrajeet/scripts/test.py", line 11, in open_browser     browser = eval('webdriver.%s()'%browsertype) nameerror: global name 'browsertype' not defined 

i need flexibility pass in additional options nose such --processes, --process-timeout without having specify them in parser.

any ideas? reading...

the second instance of nose (you asking nose run 2 cores --processes 2) not evaluate __main__ , browser variable never gets set. can reproduce error running nosetests test.py.

if intend on using multiprocessing plugin, may have invest time , proper plugin in place parse arguments properly, similar question: using nose plugin pass boolean package


Comments

Popular posts from this blog

android - Automated my builds -

how to proxy from https to http with lighttpd -

python - Flask migration error -