Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Python для экспертов
  • » [pytets-xdist + pytest-allure-adaptor] Падение хотя бы одного теста в кейсе, запускаемом в параллельных процессах, дает в результате пустой xml-файл для генератора allure-отчета [RSS Feed]

#1 Окт. 16, 2017 04:43:29

alexgreg
Зарегистрирован: 2017-05-15
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

[pytets-xdist + pytest-allure-adaptor] Падение хотя бы одного теста в кейсе, запускаемом в параллельных процессах, дает в результате пустой xml-файл для генератора allure-отчета

Падение хотя бы одного теста в кейсе, запускаемом в параллельных процессах, дает в результате пустой xml-файл для генератора allure-отчета
————————————————————————————
команда запуска кейса в нескольких процессах выглядит так:

pytest -n 3 “my_script.py” –alluredir=“d:\\my_report\\my_script\\”
my_script.py - скрипт с параллельно запускаемыми тестами
————————————————————————————
Когда все тесты проходят успешно, xml-файл формируется корректно
и генерируется в allure-отчет. В случае падения одного или нескольких
тестов - файл создается пустой (0 байт)

Кто нибудь решал такую задачу? Что сделать, что бы при падении тестов
файл всё-таки формировался, как следует?

Офлайн

#2 Окт. 16, 2017 05:25:58

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9727
Репутация: +  843  -
Профиль   Отправить e-mail  

[pytets-xdist + pytest-allure-adaptor] Падение хотя бы одного теста в кейсе, запускаемом в параллельных процессах, дает в результате пустой xml-файл для генератора allure-отчета

alexgreg
Падение хотя бы одного теста в кейсе, запускаемом в параллельных процессах
1) Сделай экспериментальный тестовый файл без параллельных процессов. Сделай там специальный сбой теста и посмотри, генерируется ли xml-файл.
2) Если xml-файл генерируется, добавь в этот тестовый файл параллельный запуск тестов. Сделай там специальный сбой теста и посмотри, генерируется ли xml-файл.

Нужно выяснить таким образом: 1) действительно ли дело не в настройках проекта; 2) действительно ли дело в многопроцессном запуске.



Офлайн

#3 Окт. 16, 2017 05:50:51

alexgreg
Зарегистрирован: 2017-05-15
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

[pytets-xdist + pytest-allure-adaptor] Падение хотя бы одного теста в кейсе, запускаемом в параллельных процессах, дает в результате пустой xml-файл для генератора allure-отчета

тот же самый скрипт в последовательном запуске отрабатывает, т.е. если падает хотябы один тест, то это отражается в xml-файле и в allure-отчете

тех.данные:
————————————————————————————
platform win32 – Python 3.6.2, pytest-3.2.2, py-1.4.34, pluggy-0.4.0
rootdir: D:\pro\pypro\…
plugins: xdist-1.20.0, forked-0.2, allure-adaptor-1.7.8
————————————————————————————

Отредактировано alexgreg (Окт. 16, 2017 12:01:38)

Офлайн

#4 Окт. 16, 2017 06:57:57

alexgreg
Зарегистрирован: 2017-05-15
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

[pytets-xdist + pytest-allure-adaptor] Падение хотя бы одного теста в кейсе, запускаемом в параллельных процессах, дает в результате пустой xml-файл для генератора allure-отчета

При параллельном запуске, в случае падения хотя бы одного теста…..

  File "D:\pf\PyCharm\helpers\pycharm\_jb_pytest_runner.py", line 31, in <module>
    pytest.main(args, plugins_to_load)
  File "D:\pf\python36\lib\site-packages\_pytest\config.py", line 58, in main
    return config.hook.pytest_cmdline_main(config=config)
  File "D:\pf\python36\lib\site-packages\_pytest\vendored_packages\pluggy.py", line 745, in __call__
    return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
  File "D:\pf\python36\lib\site-packages\_pytest\vendored_packages\pluggy.py", line 339, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "D:\pf\python36\lib\site-packages\_pytest\vendored_packages\pluggy.py", line 334, in <lambda>
    _MultiCall(methods, kwargs, hook.spec_opts).execute()
  File "D:\pf\python36\lib\site-packages\_pytest\vendored_packages\pluggy.py", line 614, in execute
    res = hook_impl.function(*args)
  File "D:\pf\python36\lib\site-packages\_pytest\main.py", line 139, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "D:\pf\python36\lib\site-packages\_pytest\main.py", line 133, in wrap_session
    exitstatus=session.exitstatus)
  File "D:\pf\python36\lib\site-packages\_pytest\vendored_packages\pluggy.py", line 745, in __call__
    return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
  File "D:\pf\python36\lib\site-packages\_pytest\vendored_packages\pluggy.py", line 339, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "D:\pf\python36\lib\site-packages\_pytest\vendored_packages\pluggy.py", line 334, in <lambda>
    _MultiCall(methods, kwargs, hook.spec_opts).execute()
  File "D:\pf\python36\lib\site-packages\_pytest\vendored_packages\pluggy.py", line 613, in execute
    return _wrapped_call(hook_impl.function(*args), self.execute)
  File "D:\pf\python36\lib\site-packages\_pytest\vendored_packages\pluggy.py", line 250, in _wrapped_call
    wrap_controller.send(call_outcome)
  File "D:\pf\python36\lib\site-packages\_pytest\terminal.py", line 406, in pytest_sessionfinish
    outcome.get_result()
  File "D:\pf\python36\lib\site-packages\_pytest\vendored_packages\pluggy.py", line 279, in get_result
    raise ex[1].with_traceback(ex[2])
  File "D:\pf\python36\lib\site-packages\_pytest\vendored_packages\pluggy.py", line 265, in __init__
    self.result = func()
  File "D:\pf\python36\lib\site-packages\_pytest\vendored_packages\pluggy.py", line 614, in execute
    res = hook_impl.function(*args)
  File "d:\pf\python36\lib\site-packages\allure\pytest_plugin.py", line 494, in pytest_sessionfinish
    self.impl._write_xml(f, s)
  File "d:\pf\python36\lib\site-packages\allure\common.py", line 254, in _write_xml
    xmlfied.toxml(),
  File "d:\pf\python36\lib\site-packages\allure\rules.py", line 129, in toxml
    manys = sum([[(m[0], v) for v in m[1]] for m in entries(Many)], [])
  File "d:\pf\python36\lib\site-packages\allure\rules.py", line 123, in entries
    for (name, rule) in items
  File "d:\pf\python36\lib\site-packages\allure\rules.py", line 124, in <listcomp>
    if isinstance(rule, clazz) and rule.check(getattr(self, name))]
  File "d:\pf\python36\lib\site-packages\allure\rules.py", line 109, in value
    values = super(WrappedMany, self).value(name, what)
  File "d:\pf\python36\lib\site-packages\allure\rules.py", line 103, in value
    return [self.rule.value(name, x) for x in what]
  File "d:\pf\python36\lib\site-packages\allure\rules.py", line 103, in <listcomp>
    return [self.rule.value(name, x) for x in what]
  File "d:\pf\python36\lib\site-packages\allure\rules.py", line 92, in value
    return what.toxml()
  File "d:\pf\python36\lib\site-packages\allure\rules.py", line 128, in toxml
    nested = entries(Nested)
  File "d:\pf\python36\lib\site-packages\allure\rules.py", line 123, in entries
    for (name, rule) in items
  File "d:\pf\python36\lib\site-packages\allure\rules.py", line 124, in <listcomp>
    if isinstance(rule, clazz) and rule.check(getattr(self, name))]
  File "d:\pf\python36\lib\site-packages\allure\rules.py", line 92, in value
    return what.toxml()
  File "d:\pf\python36\lib\site-packages\allure\rules.py", line 126, in toxml
    elements = entries(Element)
  File "d:\pf\python36\lib\site-packages\allure\rules.py", line 123, in entries
    for (name, rule) in items
  File "d:\pf\python36\lib\site-packages\allure\rules.py", line 124, in <listcomp>
    if isinstance(rule, clazz) and rule.check(getattr(self, name))]
  File "d:\pf\python36\lib\site-packages\allure\rules.py", line 80, in value
    return element_maker(self.name or name, self.namespace)(legalize_xml(unicodify(what)))
  File "d:\pf\python36\lib\site-packages\allure\utils.py", line 126, in unicodify
    return text_type(something)  # @UndefinedVariable
  File "D:\pf\python36\lib\site-packages\_pytest\_code\code.py", line 694, in __str__
    s = self.__unicode__()
  File "D:\pf\python36\lib\site-packages\_pytest\_code\code.py", line 704, in __unicode__
    self.toterminal(tw)
  File "D:\pf\python36\lib\site-packages\_pytest\_code\code.py", line 735, in toterminal
    element[0].toterminal(tw)
  File "D:\pf\python36\lib\site-packages\_pytest\_code\code.py", line 764, in toterminal
    if entry.style == "long":
AttributeError: 'dict' object has no attribute 'style'



….. вываливается вот такая гадость

Отредактировано alexgreg (Окт. 16, 2017 08:53:22)

Офлайн

#5 Окт. 16, 2017 18:55:08

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

[pytets-xdist + pytest-allure-adaptor] Падение хотя бы одного теста в кейсе, запускаемом в параллельных процессах, дает в результате пустой xml-файл для генератора allure-отчета

Если бы бы ты сделал минимальный проект повторяющий ошибку, чтобы быстро развернуть и посмотреть, я думаю, многие бы посмотрели, а так придется ждать того, кто натыкался на грабли.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#6 Окт. 17, 2017 04:41:47

alexgreg
Зарегистрирован: 2017-05-15
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

[pytets-xdist + pytest-allure-adaptor] Падение хотя бы одного теста в кейсе, запускаемом в параллельных процессах, дает в результате пустой xml-файл для генератора allure-отчета

Винни, я тебя услышал.

Офлайн

#7 Окт. 17, 2017 06:28:56

alexgreg
Зарегистрирован: 2017-05-15
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

[pytets-xdist + pytest-allure-adaptor] Падение хотя бы одного теста в кейсе, запускаемом в параллельных процессах, дает в результате пустой xml-файл для генератора allure-отчета

вот проект.
перед использованием прочитайте read.me.txt и chromedriver.txt

Прикреплённый файлы:
attachment my_pro.zip (4,1 KБ)

Офлайн

  • Начало
  • » Python для экспертов
  • » [pytets-xdist + pytest-allure-adaptor] Падение хотя бы одного теста в кейсе, запускаемом в параллельных процессах, дает в результате пустой xml-файл для генератора allure-отчета[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version