Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

The "excluded" and "mode" parameters of the allure.dynamic.parameter function are ignored for the pytest parameters #822

Copy link
Copy link
Open
@RealMaxos

Description

@RealMaxos
Issue body actions

I'm submitting a ...

  • bug report
  • feature request
  • support request => Please do not submit support request here, see note at the top of this template.

What is the current behavior?

The "excluded" and "mode" parameters of the allure.dynamic.parameter function do not affect the display of the pytest parameter in the TestOps report.

If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem

My test looks something like this:

@pytest.mark.parametrize('login, password', [('admin', 'secret')])
def test_authorization(login, password):
    allure.dynamic.parameter('password', password, mode=allure.parameter_mode.MASKED)
    ...

In this case, the parameters of the test function are passed using pytest.mark.parametrize.

The output of the report file looks like this:

{"name": "test_authorization[admin-secret]", "status": "passed", "parameters": [{"name": "login", "value": "'admin'"}, {"name": "password", "value": "'secret'"}], "start": 1718844940592, "stop": 1718844940592, "uuid": "1f59becc-6d3a-4be3-be5b-0ffbd257ec5b", "historyId": "36ae0f9494e1ff5a9b8153a55ab15428", "testCaseId": "2334cf5fc2f37123d71eab12c56f1a15", "fullName": "test_main#test_authorization", "labels": [{"name": "suite", "value": "test_main"}, {"name": "host", "value": "MYHOST"}, {"name": "thread", "value": "12440-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_main"}]}

What is the expected behavior?

The value of the "password" parameter is expected to be masked in the report.

What is the motivation / use case for changing the behavior?


Please tell us about your environment:

  • Allure version: 2.10.0
  • Test framework: pytest@8.2.2
  • Allure adaptor: allure-pytest@2.13.5

Other information

The solution method:

Change the method of the AllureListener class to allure_pytest/listener.py

Current code:

@allure_commons.hookimpl
def add_parameter(self, name, value, excluded, mode: ParameterMode):
    test_result: TestResult = self.allure_logger.get_test(None)
    existing_param = next(filter(lambda x: x.name == name, test_result.parameters), None)
    if existing_param:
        existing_param.value = represent(value)
    else:
        test_result.parameters.append(
            Parameter(
                name=name,
                value=represent(value),
                excluded=excluded or None,
                mode=mode.value if mode else None
            )
        )

Proposal for a change:

@allure_commons.hookimpl
def add_parameter(self, name, value, excluded, mode: ParameterMode):
    test_result: TestResult = self.allure_logger.get_test(None)
    existing_param = next(filter(lambda x: x.name == name, test_result.parameters), None)
    if existing_param:
        existing_param.value = represent(value)
        existing_param.excluded = excluded or None
        existing_param.mode = mode.value if mode else None
    else:
        test_result.parameters.append(
            Parameter(
                name=name,
                value=represent(value),
                excluded=excluded or None,
                mode=mode.value if mode else None
            )
        )

With this implementation, the result file will look like this:

{"name": "test_authorization[admin-secret]", "status": "passed", "parameters": [{"name": "login", "value": "'admin'"}, {"name": "password", "value": "'secret'", "mode": "masked"}], "start": 1718845042635, "stop": 1718845042635, "uuid": "88fa5ba0-faf1-40b0-a380-32c51a5f8907", "historyId": "36ae0f9494e1ff5a9b8153a55ab15428", "testCaseId": "2334cf5fc2f37123d71eab12c56f1a15", "fullName": "test_main#test_authorization", "labels": [{"name": "suite", "value": "test_main"}, {"name": "host", "value": "MYHOST"}, {"name": "thread", "value": "4536-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_main"}]}

Metadata

Metadata

Assignees

No one assigned

    Labels

    task:improvementChange that improves some user experience but can't be considered a new featureChange that improves some user experience but can't be considered a new featuretheme:pytest

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Morty Proxy This is a proxified and sanitized view of the page, visit original site.