4

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
4

1 回答 1

3

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本身。

干杯!

于 2016-01-15T09:12:38.610 回答