worker_id fixture as shown in #47
This commit is contained in:
10
README.rst
10
README.rst
@@ -185,6 +185,16 @@ at once. The specifications strings use the `xspec syntax`_.
|
|||||||
|
|
||||||
.. _`execnet`: http://codespeak.net/execnet
|
.. _`execnet`: http://codespeak.net/execnet
|
||||||
|
|
||||||
|
Identifying the worker process during a test
|
||||||
|
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
If you need to determine the identity of a worker process in
|
||||||
|
a test or fixture, you may use the ``worker_id`` fixture to do so::
|
||||||
|
|
||||||
|
@pytest.fixture()
|
||||||
|
def user_account(worker_id):
|
||||||
|
""" use a different account in each xdist worker """
|
||||||
|
return "account_%s" % worker_id
|
||||||
|
|
||||||
Specifying test exec environments in an ini file
|
Specifying test exec environments in an ini file
|
||||||
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
|||||||
@@ -620,3 +620,18 @@ class TestNodeFailure:
|
|||||||
"*Slave*crashed while running*",
|
"*Slave*crashed while running*",
|
||||||
"*1 failed*2 passed*",
|
"*1 failed*2 passed*",
|
||||||
])
|
])
|
||||||
|
|
||||||
|
def test_worker_id_fixture(testdir):
|
||||||
|
f = testdir.makepyfile("""
|
||||||
|
import pytest
|
||||||
|
@pytest.mark.parametrize("run_num", [1,2])
|
||||||
|
def test_worker_id1(worker_id, run_num):
|
||||||
|
with open("worker_id%s" % run_num, "w") as f:
|
||||||
|
f.write(worker_id)
|
||||||
|
""")
|
||||||
|
result = testdir.runpytest(f, "-n2")
|
||||||
|
worker_ids = []
|
||||||
|
for run_num in [1,2]:
|
||||||
|
worker_id_file_path = testdir.tmpdir.join("worker_id%s" % run_num).strpath
|
||||||
|
worker_ids.append(open(worker_id_file_path, "r").read())
|
||||||
|
assert "gw0" in worker_ids and "gw1" in worker_ids
|
||||||
|
|||||||
@@ -99,3 +99,15 @@ def pytest_cmdline_main(config):
|
|||||||
if usepdb:
|
if usepdb:
|
||||||
raise pytest.UsageError(
|
raise pytest.UsageError(
|
||||||
"--pdb incompatible with distributing tests.")
|
"--pdb incompatible with distributing tests.")
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
# fixtures
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="session")
|
||||||
|
def worker_id(request):
|
||||||
|
if hasattr(request.config, 'slaveinput'):
|
||||||
|
return request.config.slaveinput['slaveid']
|
||||||
|
else:
|
||||||
|
return 'master'
|
||||||
|
|||||||
Reference in New Issue
Block a user