[Tutor] How to pass command line variables to this python code...
vince spicer
vinces1979 at gmail.com
Tue Jul 14 21:57:32 CEST 2009
Sorry I do remember that issue in the past, the unittest.main takes over the
cli variables in order to select modules to run
python selenium-google-test.py --help
so unittest is assuming yankees is a test module, you can override this
functionality however with:
unittest.main(argv=['mytestapp'])
this will cause the default run all test modules, and allow you to access
the argv
Hope that helps
Vince
On Tue, Jul 14, 2009 at 1:36 PM, J Cook <jcook713 at gmail.com> wrote:
> Ok,
>
> So I added the following:
>
> <code>
> from selenium import selenium
> import unittest, time, re
> import sys # added this
>
> q = sys.argv[1] # added this
> print q # added this just to see
>
> class NewTest(unittest.TestCase):
> def setUp(self):
> self.verificationErrors = []
> self.selenium = selenium("localhost", 4444, "*chrome", "
> http://www.google.com/")
> self.selenium.start()
>
> def test_new(self):
> sel = self.selenium
> sel.open("/")
> sel.type("q", q) # this is where I want the argument to end up
>
> def tearDown(self):
> self.selenium.stop()
> self.assertEqual([], self.verificationErrors)
>
> if __name__ == "__main__":
> unittest.main()
> </code>
>
> I run the following:
>
> $ python selenium-google-test.py yankees
> yankees
> Traceback (most recent call last):
> File "selenium-google-test.py", line 24, in <module>
> unittest.main()
> File "/usr/lib/python2.6/unittest.py", line 816, in __init__
> self.parseArgs(argv)
> File "/usr/lib/python2.6/unittest.py", line 843, in parseArgs
> self.createTests()
> File "/usr/lib/python2.6/unittest.py", line 849, in createTests
> self.module)
> File "/usr/lib/python2.6/unittest.py", line 613, in loadTestsFromNames
> suites = [self.loadTestsFromName(name, module) for name in names]
> File "/usr/lib/python2.6/unittest.py", line 584, in loadTestsFromName
> parent, obj = obj, getattr(obj, part)
> AttributeError: 'module' object has no attribute 'yankees'
>
> How do I get the argument over to where I need it to be?
>
> Justin
>
> vince spicer wrote:
>
>> First off, selenium is a great tool and the python driver is very powerful
>>
>> there are numerous ways to access cli variables,
>>
>> the quickest
>>
>> import sys
>> print sys.srgv
>>
>> sys.argv will it output a array of all command line args
>>
>> ./selenium-google-test.py yankees
>> will out put:
>>
>> ['selenium-google-test.py', 'yankees']
>>
>> so
>>
>> args = sys.argv
>>
>> args[0] == 'yankees'
>> True
>>
>> for a more functional way, check out
>> http://docs.python.org/library/getopt.html
>>
>>
>>
>> On Tue, Jul 14, 2009 at 11:11 AM, J Cook <jcook713 at gmail.com <mailto:
>> jcook713 at gmail.com>> wrote:
>>
>> Hello,
>>
>> I have some autogenerated code from Selenium which I cannot figure
>> out how to pass some command line variables to. For example I could
>> export the same in Perl and it would be for example:
>>
>> <code>
>> use strict;
>> use warnings;
>> use Time::HiRes qw(sleep);
>> use Test::WWW::Selenium;
>> use Test::More "no_plan";
>> use Test::Exception;
>>
>> my $sel = Test::WWW::Selenium->new( host => "localhost",
>> port => 4444,
>> browser => "*chrome",
>> browser_url => "
>> http://www.google.com/" );
>>
>> $sel->open_ok("/");
>> $sel->type_ok("q", "red sox");
>> </code>
>>
>> I could then go in and add something like:
>>
>> my ($arg1) = shift || "default";
>>
>> which would pick up the first command line parameter and then I
>> could do something like:
>>
>> $sel->(type_ok, $arg1);
>>
>> All is good here, now Selenium will export the following for Python:
>>
>> <code>
>> from selenium import selenium
>> import unittest, time, re
>>
>> class NewTest(unittest.TestCase):
>> def setUp(self):
>> self.verificationErrors = []
>> self.selenium = selenium("localhost", 4444, "*chrome",
>> "http://www.google.com/")
>> self.selenium.start()
>>
>> def test_new(self):
>> sel = self.selenium
>> sel.open("/")
>> sel.type("q", "red sox")
>>
>> def tearDown(self):
>> self.selenium.stop()
>> self.assertEqual([], self.verificationErrors)
>>
>> if __name__ == "__main__":
>> unittest.main()
>> </code>
>>
>> Now I am confused on how to pass a command line parameter here. Any
>> suggestions? I would like to be able to run something like:
>>
>> $ python selenium-google-test.py "yankees"
>>
>> Suggestions?
>>
>>
>> TIA
>>
>> Justin
>> _______________________________________________
>> Tutor maillist - Tutor at python.org <mailto:Tutor at python.org>
>> http://mail.python.org/mailman/listinfo/tutor
>>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20090714/7df6b3cd/attachment.htm>
More information about the Tutor
mailing list