Re: simple web/html testing

2011-06-08 Thread Santi
For static html testing, I'd avoid using Selenium. Even though Selenium is 
*the* tool for RIA and javascript intensive environments, feels like bringing 
up a browser with all the coordination and resources that it takes just to 
crawl the website and find 404s is an overkill.

What we implemented for doing that is just a simple crawler based on urllib:

class LinkTest(MechanizeTestCase):

def __init__(self, *args, **kwargs):
super(LinkTest, self).__init__(*args, **kwargs)
self.pages = ['/?']
self.exceptions = ['/forums',
   '/blog']

def _page_test(self, url):
try:
self.get(url[1:], local=True)
except Exception, e:
raise Exception("Couldn't test %s - %s (%s)" % (url, e, 
self.exceptions))

try:
links = self.mbrowser.links()
except mechanize.BrowserStateError, e:
return

for l in links:
if not l.url.startswith('/'):
continue
if l.url in self.exceptions:
continue

self.pages.append(l.url)
self.pages = list(set(self.pages))

try:
mechanize.urlopen(l.absolute_url)
#Apparently this will raise with the HTTP Error code
except Exception, e:
raise Exception("Error with link '%s' on page '%s'" % (l.url, 
url))

def test_all_links(self):
while self.pages:
x = self.pages.pop()
if x not in self.exceptions:
print "Trying %s" % x
self._page_test(x)
self.exceptions.append(x)
self.exceptions = list(set(self.exceptions))


And basically, MechanizeTestCase is a couple of handy assertions as well as 
instantiating a mechanize instance:

class MechanizeTestCase(TestCase):
def setUp(self, extra=None):
self.config = load_config() or self.fail('Failed to load config.')

def __init__(self, arg):
super(MechanizeTestCase, self).__init__(arg)
self.mbrowser = mechanize.Browser()

def get(self, url, local=True):
self.last_url = url
if local:
url = self.config['base-url'] + url
self._page = self.mbrowser.open(url)
self._content = self._page.read()

def submitForm(self):
self._page = self.mbrowser.submit()
self._content = self._page.read()

def assertWantedContent(self, content):
self.assertTrue(content in self._content,
"couldn't find %s in /%s" % (content, self.last_url))

def assertUrl(self, url):
self.assertEqual(self.config['base-url'] + url, self._page.geturl(),
"wrong url expected: %s, received: %s, content: %s" % (url, 
self._page.geturl(), self._content))



Hope this helps 
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Selenium Webdriver + Python (How to get started ??)

2013-04-23 Thread Santi
On Monday, April 22, 2013 8:24:40 AM UTC-4, arif7...@gmail.com wrote:
> Note that:- I have some experience of using Selenium IDE and Webdriver 
> (Java). but no prior experience of Python.
> 
> 
> 
> Now there is a project for which I will need to work with webdriver + Python. 
> 
> 
> 
> So far I have done following steps.. 
> 
> 
> 
> Install JDK
> 
> Setup Eclipse
> 
> download & Installed Python v3.3.1
> 
> Download & Installed Pydev (for Eclipse) also configured
> 
> download & installed (Distribute + PIP) 
> http://www.lfd.uci.edu/~gohlke/pythonlibs/#pip
> 
> Installed Selenium using command prompt
> 
> 
> 
> Running following commands from windows 7 command prompt, successfully opens 
> firefox browser
> 
> 
> 
> python
> 
> >>>from selenium import webdriver
> 
> >>>webdriver.Firefox()
> 
> 
> 
> --
> 
> 
> 
> ISSUE is that, I do not know exact steps of creating a python webdriver test 
> project.
> 
> 
> 
> I create new Pydev project with a "src" folder and also used sample python 
> code from internet but selenium classes cannot be recognized. I have tried 
> various approaches to import libraries but none seems to work. Any one can 
> guide me what i need to do step by step to successfully run a simple test via 
> python webdriver!! (eclipse pydev)
> 
> 
> 
> Thank you.

I'm guessing your PyDev setup is not configured to use pip and your 
dependencies?
How about this: 
http://stackoverflow.com/questions/4631377/unresolved-import-issues-with-pydev-and-eclipse
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: PEP 372 -- Adding an ordered directory to collections

2011-08-07 Thread Lucio Santi
Hi all,

I'm a first-time writer here, so excuse me if I say something inappropriate
or such.

Last week, I was reviewing some Python 2.7 modules when I came across the
OrderedDict data structure. After seeing its official implementation and
also after reading through the corresponding PEP, I figured out another way
of implementing it. As I recently saw here, the idea is similar to the one
proposed by bearophile, but nevertheless I think it is more efficient since
there is no need to perform lookups multiple times.

The idea is to embed the doubly-linked list of items in the dictionary
itself, and extend the values inserted by providing a node as a 4-tuple
. Of course, references to the first
and last nodes must be kept too, in addition to the dictionary.

After implementing this approach, I experimented a little bit and compared
both versions (i.e., the official one that uses an extra dictionary and
mine) by measuring the running times of some basic operations. I verified
that it indeed outperforms the existing implementation.

I made up a recipe with the code and several comments, including more
details about the experimentation mentioned above:
http://code.activestate.com/recipes/577826-yet-another-ordered-dictionary/


Comments will be surely appreciated!


Lucio
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Ten rules to becoming a Python community member.

2011-08-15 Thread Lucio Santi
On Mon, Aug 15, 2011 at 9:06 AM, Neil Cerutti  wrote:

> On 2011-08-14, Chris Angelico  wrote:
> > On Sun, Aug 14, 2011 at 2:21 PM, Irmen de Jong 
> wrote:
> >> On 14-8-2011 7:57, rantingrick wrote:
> >>> 8. Use "e.g." as many times as you can! (e.g. e.g.) If you use "e.g."
> >>> more than ten times in a single post, you will get an invite to
> >>> Guido's next birthday party; where you'll be forced to do shots whist
> >>> walking the balcony railing wearing wooden shoes!
> >>
> >> I lolled about this one, e.g. I laughed out loud. But where
> >> are the tulips and windmills for extra credit?
> >>
> >> Greetings from a Dutchman!
>
> No credit. E.g., i.e., exampla gratis, means, "for example."
>

The correct spelling is 'exempli gratia'. It's Latin.

i.e., on the other hand, comes from 'id est' ('that is'). Latin too.


Regards,

Lucio
-- 
http://mail.python.org/mailman/listinfo/python-list