pytest-dsl 0.9.1__py3-none-any.whl → 0.11.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -56,30 +56,51 @@ class RemoteKeywordClient:
56
56
  try:
57
57
  param_names = self.server.get_keyword_arguments(name)
58
58
  doc = self.server.get_keyword_documentation(name)
59
-
60
- print(f"注册远程关键字: {name}, 参数: {param_names}")
59
+
60
+ # 尝试获取参数详细信息(包括默认值)
61
+ param_details = []
62
+ try:
63
+ param_details = self.server.get_keyword_parameter_details(name)
64
+ except Exception as e:
65
+ print(f"获取关键字 {name} 的参数详细信息失败,使用基本信息: {e}")
66
+ # 如果新方法不可用,使用旧的方式
67
+ for param_name in param_names:
68
+ param_details.append({
69
+ 'name': param_name,
70
+ 'mapping': param_name,
71
+ 'description': f'远程关键字参数: {param_name}',
72
+ 'default': None
73
+ })
74
+
75
+ print(f"注册远程关键字: {name}, 参数详情: {param_details}")
61
76
 
62
77
  # 创建参数列表
63
78
  parameters = []
64
79
  param_mapping = {} # 为每个关键字创建参数映射
65
80
 
66
- for param_name in param_names:
81
+ for param_detail in param_details:
82
+ param_name = param_detail['name']
83
+ param_mapping_name = param_detail.get('mapping', param_name)
84
+ param_desc = param_detail.get('description', f'远程关键字参数: {param_name}')
85
+ param_default = param_detail.get('default')
86
+
67
87
  # 确保参数名称正确映射
68
- # 这里我们保持原始参数名称,但在执行时会进行正确映射
69
88
  parameters.append({
70
89
  'name': param_name,
71
- 'mapping': param_name, # 保持原始参数名称
72
- 'description': f'远程关键字参数: {param_name}'
90
+ 'mapping': param_mapping_name,
91
+ 'description': param_desc,
92
+ 'default': param_default # 添加默认值支持
73
93
  })
74
94
  # 添加到参数映射
75
- param_mapping[param_name] = param_name
95
+ param_mapping[param_name] = param_mapping_name
76
96
 
77
97
  # 添加步骤名称参数,这是所有关键字都应该有的
78
98
  if not any(p['name'] == '步骤名称' for p in parameters):
79
99
  parameters.append({
80
100
  'name': '步骤名称',
81
101
  'mapping': 'step_name',
82
- 'description': '自定义的步骤名称,用于在报告中显示'
102
+ 'description': '自定义的步骤名称,用于在报告中显示',
103
+ 'default': None
83
104
  })
84
105
  param_mapping['步骤名称'] = 'step_name'
85
106
 
@@ -93,6 +114,7 @@ class RemoteKeywordClient:
93
114
  'func': remote_func,
94
115
  'mapping': {p['name']: p['mapping'] for p in parameters},
95
116
  'parameters': [Parameter(**p) for p in parameters],
117
+ 'defaults': {p['mapping']: p['default'] for p in parameters if p['default'] is not None}, # 添加默认值支持
96
118
  'remote': True, # 标记为远程关键字
97
119
  'alias': self.alias,
98
120
  'original_name': name
@@ -101,7 +123,8 @@ class RemoteKeywordClient:
101
123
  # 缓存关键字信息
102
124
  self.keyword_cache[name] = {
103
125
  'parameters': param_names, # 注意这里只缓存原始参数,不包括步骤名称
104
- 'doc': doc
126
+ 'doc': doc,
127
+ 'param_details': param_details # 缓存详细参数信息
105
128
  }
106
129
 
107
130
  # 保存参数映射
@@ -141,6 +141,7 @@ class RemoteKeywordServer:
141
141
  self.server.register_function(self.get_keyword_names)
142
142
  self.server.register_function(self.run_keyword)
143
143
  self.server.register_function(self.get_keyword_arguments)
144
+ self.server.register_function(self.get_keyword_parameter_details)
144
145
  self.server.register_function(self.get_keyword_documentation)
145
146
  self.server.register_function(self.authenticate)
146
147
 
@@ -289,6 +290,30 @@ class RemoteKeywordServer:
289
290
 
290
291
  return [param.name for param in keyword_info['parameters']]
291
292
 
293
+ def get_keyword_parameter_details(self, name):
294
+ """获取关键字的参数详细信息,包括默认值
295
+
296
+ Args:
297
+ name: 关键字名称
298
+
299
+ Returns:
300
+ list: 参数详细信息列表,每个元素包含name, mapping, description, default
301
+ """
302
+ keyword_info = keyword_manager.get_keyword_info(name)
303
+ if not keyword_info:
304
+ return []
305
+
306
+ param_details = []
307
+ for param in keyword_info['parameters']:
308
+ param_details.append({
309
+ 'name': param.name,
310
+ 'mapping': param.mapping,
311
+ 'description': param.description,
312
+ 'default': param.default
313
+ })
314
+
315
+ return param_details
316
+
292
317
  def get_keyword_documentation(self, name):
293
318
  """获取关键字的文档信息"""
294
319
  keyword_info = keyword_manager.get_keyword_info(name)