Skip to content

Instantly share code, notes, and snippets.

@baijum
Created January 22, 2012 13:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save baijum/1657059 to your computer and use it in GitHub Desktop.
Save baijum/1657059 to your computer and use it in GitHub Desktop.
import time
import pytest
def pytest_configure_node(node):
node.slaveinput['all_nodes'] = {'a': True, 'b': True, 'c': True}
node.slaveinput['used_nodes'] = {}
def _get_browser(request):
def get_browser():
class Browser(object):
node = None
browser = Browser()
if hasattr(request.config, 'slaveinput'):
all_nodes = request.config.slaveinput['all_nodes']
used_nodes = request.config.slaveinput['used_nodes']
free_nodes = set(all_nodes.keys()) - set(used_nodes.keys())
node = free_nodes.pop()
used_nodes[node] = all_nodes[node]
request.config.slaveinput['used_nodes'] = used_nodes
browser.node = node
return browser
return get_browser
def _close_browser(request):
def close_browser(browser):
if hasattr(request.config, 'slaveinput'):
used_nodes = request.config.slaveinput['used_nodes']
del used_nodes[browser.node]
request.config.slaveinput['used_nodes'] = used_nodes
return close_browser
def pytest_funcarg__browser(request):
return request.cached_setup(
setup=_get_browser(request),
teardown=_close_browser(request),
scope='function')
$ py.test test_hello.py -d --tx 2*popen//python=python
==================================================================== test session starts ====================================================================
platform linux2 -- Python 2.6.6 -- pytest-2.2.1
gw0 [4] / gw1 [4]
scheduling tests via LoadScheduling
FFFF
========================================================================= FAILURES ==========================================================================
_________________________________________________________________________ test_one __________________________________________________________________________
[gw1] linux2 -- Python 2.6.6 /home/baiju/ve/bin/python
browser = <conftest.Browser object at 0xb75f32cc>
def test_one(browser):
print browser.node
time.sleep(.5)
> assert browser.node == 1
E assert 'a' == 1
E + where 'a' = <conftest.Browser object at 0xb75f32cc>.node
test_hello.py:6: AssertionError
---------------------------------------------------------------------- Captured stdout ----------------------------------------------------------------------
a
_________________________________________________________________________ test_two __________________________________________________________________________
[gw0] linux2 -- Python 2.6.6 /home/baiju/ve/bin/python
browser = <conftest.Browser object at 0xb744d2cc>
def test_two(browser):
print browser.node
time.sleep(1)
> assert browser.node == 1
E assert 'a' == 1
E + where 'a' = <conftest.Browser object at 0xb744d2cc>.node
test_hello.py:11: AssertionError
---------------------------------------------------------------------- Captured stdout ----------------------------------------------------------------------
a
________________________________________________________________________ test_three _________________________________________________________________________
[gw1] linux2 -- Python 2.6.6 /home/baiju/ve/bin/python
browser = <conftest.Browser object at 0x9ccdd0c>
def test_three(browser):
print browser.node
time.sleep(1.5)
> assert browser.node == 1
E assert 'a' == 1
E + where 'a' = <conftest.Browser object at 0x9ccdd0c>.node
test_hello.py:16: AssertionError
---------------------------------------------------------------------- Captured stdout ----------------------------------------------------------------------
a
_________________________________________________________________________ test_four _________________________________________________________________________
[gw0] linux2 -- Python 2.6.6 /home/baiju/ve/bin/python
browser = <conftest.Browser object at 0xa0afb4c>
def test_four(browser):
print browser.node
time.sleep(1.3)
> assert browser.node == 1
E assert 'a' == 1
E + where 'a' = <conftest.Browser object at 0xa0afb4c>.node
test_hello.py:21: AssertionError
---------------------------------------------------------------------- Captured stdout ----------------------------------------------------------------------
a
================================================================= 4 failed in 2.67 seconds ==================================================================
(ve)
import time
def test_one(browser):
print browser.node
time.sleep(.5)
assert browser.node == 1
def test_two(browser):
print browser.node
time.sleep(1)
assert browser.node == 1
def test_three(browser):
print browser.node
time.sleep(1.5)
assert browser.node == 1
def test_four(browser):
print browser.node
time.sleep(1.3)
assert browser.node == 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment