← 输入框|github.com|刷新
Skip to content

using pytest.mark.parametrize will miss some testcase in report #778

Open

Description

@Pegasus-Yang

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?

when i use pytest.mark.parametrize ,in specific data situations, i got same historyId for two diffent testcase, when report cameout, only one of two testcase show in report.

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

Code to repeat :

data = [
    ["", "admin", 12345],
    ["admin", "", 12345],
]


@pytest.mark.parametrize("name, account, phone_number", data)
def test_add_member(name, account, phone_number):
    print(name, account, phone_number)

What is the expected behavior?

expected got 2 testcase in report

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

Please tell us about your environment:

  • Allure version: 2.19.0
  • Test framework: pytest@7.2.2
  • Allure adaptor: allure-pytest@2.13.2

Other information

Becourse in allure_pytest.util.get_history_id, only use values in original_values to generate historyId
Maybe use both name and value will solve the problem

Activity

  1. delatrie commented on Dec 5, 2023

    @delatrie
    Contributor

    Thank you for your report, @Pegasus-Yang !
    There is a bug in how we hash arguments to create historyId. Due to this bug, empty strings don't affect the result, so the actual sequence of arguments that get into historyId is ["admin", 12345] in both cases. The same bug, I believe, causes some other collisions, like 1 and "1".
    I'll fix it soon.

  2. self-assigned this
    on Dec 5, 2023
  3. saaj commented on Jun 24, 2024

    @saaj

    Here is a workaround when you don't need the history feature, but just one-off report:

    find allure-results -name '*-result.json' -print \
      | xargs -r -n1 -P8 -i -- sh -c 'jq ".historyId=.uuid" {} | sponge {}'
    
  4. removed their assignment
    on Mar 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions