pytest-parallel
pytest-parallel copied to clipboard
Does not work with allure-pytest
When I attempt to use pytest-parallel it prevents the allure report from being generated. for instance if I run: pytest --tests-per-worker 4 --alluredir=reports/allure
no report is generated. If i take the tests per worker argument out the report works. Any idea why this would prevent the report from being saved?
looks like this is the same issue as the --junit one
Hmm, I'd understand for --workers
, but I'm not sure why it's not working for --tests-per-worker
Let me rephrase that just to be clear. It is being generated, but its showing 0 tests executed.
Hi @kevlened I was just curious if there was any plan to address the reporting bugs in the near future?
Not in the near future (probably in months, not weeks or days). I'm not focusing on Browsertron much anymore and this library was a part of that work. I'll do my best to get to them when I can. I can provide guidance for any PRs though!
@kevlened Completely understand, I hope I didn't come off as rude. I appreciate the work you did to create this. If I knew python other than to write some Selenium tests Id love to help. :)
No worries (and thanks)!
@kevlened Can you tell me your idea about a time for fix this issue (Bug) ?
Please, look my changes, it is help me to work with allure-pytest in paralel.
I'm test with --workers 2
and with 3,6,8,auto
.
But it is have a trouble with --tests-per-worker
when it is greather than 1
. It is add N identical steps, where N = tests-per-worker
index 63d4175..8e71da4 100644
--- a/pytest_parallel/__init__.py
+++ b/pytest_parallel/__init__.py
@@ -8,6 +8,7 @@ import threading
import queue as Queue
from py._xmlgen import raw
from multiprocessing import Manager, Process
+from allure_pytest.plugin import pytest_configure as original_pytest_configure
__version__ = '0.0.9'
@@ -54,6 +55,7 @@ def run_test(session, item, nextitem):
def process_with_threads(queue, session, tests_per_worker):
+ original_pytest_configure(allur_conf)
threads = []
for _ in range(tests_per_worker):
thread = ThreadWorker(queue, session)
@@ -62,6 +64,9 @@ def process_with_threads(queue, session, tests_per_worker):
[t.join() for t in threads]
+allur_conf = None
+
+
class ThreadWorker(threading.Thread):
def __init__(self, queue, session):
threading.Thread.__init__(self)
@@ -69,6 +74,7 @@ class ThreadWorker(threading.Thread):
self.session = session
def run(self):
+ original_pytest_configure(allur_conf)
while True:
try:
index = self.queue.get_nowait()
@@ -87,6 +93,8 @@ class ThreadWorker(threading.Thread):
@pytest.mark.trylast
def pytest_configure(config):
+ global allur_conf
+ allur_conf = config
workers = parse_config(config, 'workers')
tests_per_worker = parse_config(config, 'tests_per_worker')
if not config.option.collectonly and (workers or tests_per_worker):
@SizovIgor did you get any further with getting tests-per-worker
to work?
The latest (0.1.0
) is quite a big change that should resolve most reporting issues. It may solve this issue as well.
is this issue resolved? i am still facing this issue with 0.1.0
Hi @kevlened
Thank you for your response.
I have same issue:
allure-pytest==2.8.6
pytest==6.0.1
pytest-parallel==0.1.0
Do you know when it can be resolve BTW, same with report portal.
Thanks!
I'm facing the same issue
Any solution/workaround for this problem?
Facing same issue.
@kevlened - If i were to try and change the current situation, do you have a recommendation for a starting point? where in the repo should i investigate?
Thanks for the interest. Here's what I'd do:
- Repro
- Do the brief steps in CONTRIBUTING.md and make sure the existing tests were working.
- Write a failing test case similar to the one for
pytest-html
.pytest-allure
needs to be added to tox.ini. I might skip this if I was unfamiliar with testingpytest
plugins. - I'd start by trying @SizovIgor's suggestion. The suggestion was prior to a pretty substantial change, but could be adapted.
- If that didn't work, I'd investigate the
pytest-allure
repo to determine how the reports are generated. There's probably some data thatpytest-allure
depends on thatpytest-parallel
isn't sharing across threads. All ofpytest-parallel
is a few hundred lines in this file. - If I still couldn't figure it out, I'd open a PR with the test case (if I wrote one), so others could give it a shot.
If you try it, let me know if you run into any issues.
Facing same issue.
Facing same issue.
Any solution for this issue?
Same issue still. Any progress on this?