如何在 allure.step 中显示变长参数列表?
How to show variable-length argument list in allure.step?
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
allure.step
在步骤标题上调用 format
方法以形成实际的步骤名称
请参阅 https://github.com/allure-framework/allure-python/blob/master/allure/common.py#L56
中的来源
到目前为止字符串格式化无法显示 variable-arguments 字符串。
https://docs.python.org/2/library/string.html#format-string-syntax
要解决您的问题,您可以尝试使用 format
方法将包装器 object 传递给步骤标题,该方法将处理任何自定义逻辑。
喜欢
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
本身的 parameter-passing 登录。
干杯!
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
allure.step
在步骤标题上调用 format
方法以形成实际的步骤名称
请参阅 https://github.com/allure-framework/allure-python/blob/master/allure/common.py#L56
中的来源到目前为止字符串格式化无法显示 variable-arguments 字符串。
https://docs.python.org/2/library/string.html#format-string-syntax
要解决您的问题,您可以尝试使用 format
方法将包装器 object 传递给步骤标题,该方法将处理任何自定义逻辑。
喜欢
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
本身的 parameter-passing 登录。
干杯!