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
Post a Comment