【问题标题】:How to show variable-length argument list in allure.step?如何在 allure.step 中显示可变长度参数列表?
【发布时间】:2015-06-22 17:15:10
【问题描述】:

Allure 支持带函数参数的步骤名称https://github.com/allure-framework/allure-python#steps

@allure.step('my step with parameter a={0}, b={1}')
def my_step(important_parameter, my_parameter):
    pass

但它适用于确定数量的函数变量。是否可以在 **args 和 **kwargs 参数的情况下显示所有变量? 像

@allure.step('my step with parameter **kwargs}')
def my_step(**kwargs):
    pass

【问题讨论】:

    标签: python allure


    【解决方案1】:

    allure.step 在步骤标题上调用format 方法以形成实际的步骤名称

    查看源代码https://github.com/allure-framework/allure-python/blob/master/allure/common.py#L56

    到目前为止,字符串格式化无法显示可变参数字符串。

    https://docs.python.org/2/library/string.html#format-string-syntax

    要解决您的问题,您可以尝试使用format 方法将包装器对象传递给步骤标题,该方法将处理任何自定义逻辑。

    喜欢

    class MyFancyStepTitle(object):
        def __init__(self, title):
            self.title = title
        def format(self, *a, **kw):
            return self.title.format(args=a, kwargs=kw)
    
    @allure.step(MyFancyStepTitle('Function called with args {args}, kwargs {kwargs}'))
    def my_fancy_function(*a, **kw):
        return 'OK'
    
    def test_foo():
        # should produce step named 
        # "Function called with args [1, 2, 3], kwargs {'foo': 'bar', 'baz': '123'}"
        my_fancy_function(1, 2, 3, foo='bar', baz='123')
    

    此外,欢迎您发送任何拉取请求以可能修复 allure-python 本身中的参数传递登录。

    干杯!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-02
      • 2020-06-05
      相关资源
      最近更新 更多