We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
The "excluded" and "mode" parameters of the allure.dynamic.parameter function do not affect the display of the pytest parameter in the TestOps report.
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"}]}
The value of the "password" parameter is expected to be masked in the report.
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"}]}
The text was updated successfully, but these errors were encountered:
No branches or pull requests
I'm submitting a ...
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:
In this case, the parameters of the test function are passed using pytest.mark.parametrize.
The output of the report file looks like this:
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:
Other information
The solution method:
Change the method of the AllureListener class to allure_pytest/listener.py
Current code:
Proposal for a change:
With this implementation, the result file will look like this:
The text was updated successfully, but these errors were encountered: