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

@allure.step decorator fails if one of the method parameters has a default value #440

Closed

Description

@tanistra

I have a method that has the default argument set to "None". (it can be string as well)

@allure.step(
    "Send message: '{message}' on {channel} with props: '{props}'")
def send_message(
        self,
        channel: str,
        message: str,
        username: str = None,
        props: Dict = None) -> None:
    ...

Calling this method without the props parameter:

self.bot.send_message(
       channel=self.DZIUNIA['mm_channel_id'],
       message=letter)

causes a Python exception:

E KeyError: 'props'

Activity

  1. mlewandowskipear commented on Oct 31, 2019

    @mlewandowskipear

    I have seen this too.
    I assume the hook doesn't get a 'props' in this case, therefore fails. Yet, the function would be the next step after the hook, where it forces props = None making it a known variable.

    Not sure if it's a bug, or working as intended, due to order of operations.
    To that end, my workaround would be using a context manager for the whole step:

    def send_message(
            self,
            channel: str,
            message: str,
            username: str = None,
            props: Dict = None) -> None:
         with allure.step(
            "Send message: '{message}' on {channel} with props: '{props}'")
            <code>
    

    Hope that helps for the mean time!

  2. tanistra commented on Oct 31, 2019

    @tanistra
    Author

    I don't know if it's a bug either.

    I will try to replace decorator by your solution.

    Thanks!

  3. ocherniavskyi-lohika-tix commented on Feb 20, 2020

    @ocherniavskyi-lohika-tix

    image
    The problem is here - in this case only kwargs will be treated as a parameters
    But actually we need to take all default parameters from function object and merge them with kwargs

  4. Araksya-Hambaryan commented on May 25, 2020

    @Araksya-Hambaryan

    Is there any updates?
    Please note that the issue occurs on 2.8.15 version as well

  5. Denis-Alexeev commented on Mar 3, 2021

    @Denis-Alexeev
    Contributor

    Is there any updates?
    Please note that the issue occurs on 2.8.15 version as well

    PR #569

  6. added a commit that references this issue on May 19, 2021
    b2e64d4
  7. added a commit that references this issue on Apr 10, 2023
    d21a2bf
  8. added a commit that references this issue on Mar 19, 2024
    6a59bea
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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions