New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
allure.environment is missing in allure.py #96
Comments
I made a ticket also with this not working. +1 |
+1 |
@antlong I am getting
And the issue was confirmed in the respective gitter channel. |
Environment is not implemented in 2x version. |
I see it just fine.
…On Wed, Aug 23, 2017 at 8:13 AM Stanislav Seliverstov < ***@***.***> wrote:
Environment is not implemented in 2x version.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#96 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAFotEDblsAsMzcLhkpnmDhOXoxGsX2Dks5sbBdZgaJpZM4OVTCQ>
.
|
@sseliverstov about 'Environment Parameters' wrote in documentation and we expect it |
@sseliverstov If it is not implemented what is the suggested workaround then? Does this mean |
pytest: error: unrecognized arguments: --allure_severities=blocker Getting this error even I mentioned this before defining a method Categorise Severity
|
yep allure still can't do environment( god bless the allure3 |
As workaround it's possible to create # conftest.py
@pytest.fixture(scope="session")
def allure_env(tmpdir_factory):
"""Provide access to environment file."""
env = tmpdir_factory.mktemp("allure").join("environment.xml")
environment = lxml.etree.Element("environment")
with open(env, "a") as env_xml:
env_xml.write(lxml.etree.tounicode(environment, pretty_print=True))
return str(env)
@pytest.fixture(scope="session", autouse=True)
def write_allure_env(request, allure_env):
"""Copy environment to alluredir."""
yield
alluredir = request.config.getoption("--alluredir")
if os.path.isdir(alluredir):
copyfile(allure_env, os.path.join(alluredir, "environment.xml"))
# common.py
import lxml
def set_env(allure_env: str, name: str, val: str) -> None:
"""Add entry to environment.xml."""
parser = lxml.etree.XMLParser(remove_blank_text=True)
tree = lxml.etree.parse(allure_env, parser)
env = tree.getroot()
exist = tree.xpath(
f"/environment/parameter[key[text()='{name}'] "
f"and value[text()='{val}']]"
)
if not exist:
parameter = lxml.etree.SubElement(env, "parameter")
name_node = lxml.etree.SubElement(parameter, "key")
name_node.text = name
value_node = lxml.etree.SubElement(parameter, "value")
value_node.text = val
with open(allure_env, "w") as env_xml:
env_xml.write(lxml.etree.tounicode(env, pretty_print=True))
# test_something.py
import common
def test_example(request, allure_env):
"""Example test function."""
env = request.config.getoption("--env")
if env == "test":
common.set_env(allure_env, "Environment", "Test")
else:
common.set_env(allure_env, "Environment", "Production") Hope this will be helplul) |
Surely the above workaround will fail because allure considers the enviroment.xml in the allure-report dir as 'unclean' and refuse the generate without the --clean option? |
My implementation of the fixture for adding information to the Environment widget: from os import path
from typing import Any, Callable, Optional
from _pytest.fixtures import SubRequest
from pytest import fixture
ALLURE_ENVIRONMENT_PROPERTIES_FILE = 'environment.properties'
ALLUREDIR_OPTION = '--alluredir'
@fixture(scope='session', autouse=True)
def add_allure_environment_property(request: SubRequest) -> Optional[Callable]:
environment_properties = dict()
def maker(key: str, value: Any):
environment_properties.update({key: value})
yield maker
alluredir = request.config.getoption(ALLUREDIR_OPTION)
if not alluredir or not path.isdir(alluredir) or not environment_properties:
return
allure_env_path = path.join(alluredir, ALLURE_ENVIRONMENT_PROPERTIES_FILE)
with open(allure_env_path, 'w') as _f:
data = '\n'.join([f'{variable}={value}' for variable, value in environment_properties.items()])
_f.write(data) Example of usage: @fixture(autouse=True)
def cenpprop(add_allure_environment_property: Callable) -> None:
add_allure_environment_property('foo', 3)
add_allure_environment_property('bar', 'baz') |
@shpaker in this environmnet i want to add dynamic things like so how i can add that dynamic things ? |
aany news for this!! |
@shpaker thanks, |
I'm submitting a ...
What is the current behavior?
Based on documentation here to apply some environment configurations we should use allure.environment(report='Allure report', browser=u'Я.Браузер') syntax. But in allure.py environment is missing. Before we have to use some environment.properties file in report folder to apply variables to the report. New functionality is missing.
Content of allure.py:
If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem
What is the expected behavior?
What is the motivation / use case for changing the behavior?
Please tell us about your environment:
Other information
The text was updated successfully, but these errors were encountered: