|
7 | 7 | import time
|
8 | 8 |
|
9 | 9 | from .feature import force_unicode
|
10 |
| -from .utils import get_parametrize_markers_args |
| 10 | +from .utils import get_parametrize_markers_args, get_parametrize_params |
11 | 11 |
|
12 | 12 |
|
13 | 13 | class StepReport(object):
|
@@ -73,20 +73,30 @@ def __init__(self, scenario, node):
|
73 | 73 | """
|
74 | 74 | self.scenario = scenario
|
75 | 75 | self.step_reports = []
|
76 |
| - self.param_index = None |
| 76 | + |
77 | 77 | parametrize_args = get_parametrize_markers_args(node)
|
78 |
| - if parametrize_args and scenario.examples: |
79 |
| - param_names = parametrize_args[0] if isinstance(parametrize_args[0], (tuple, list)) else [ |
80 |
| - parametrize_args[0]] |
81 |
| - param_values = parametrize_args[1] |
| 78 | + params = get_parametrize_params(parametrize_args) |
| 79 | + |
| 80 | + self.param_index = self.get_param_index(node, params) |
| 81 | + self.example_kwargs = self.get_example_kwargs(node, params) |
| 82 | + |
| 83 | + def get_param_index(self, node, params): |
| 84 | + if params: |
| 85 | + param_names = params[0]['names'] |
| 86 | + param_values = params[0]['values'] |
82 | 87 | node_param_values = [node.funcargs[param_name] for param_name in param_names]
|
83 | 88 | if node_param_values in param_values:
|
84 |
| - self.param_index = param_values.index(node_param_values) |
| 89 | + return param_values.index(node_param_values) |
85 | 90 | elif tuple(node_param_values) in param_values:
|
86 |
| - self.param_index = param_values.index(tuple(node_param_values)) |
87 |
| - self.example_kwargs = { |
88 |
| - example_param: force_unicode(node.funcargs[example_param]) |
89 |
| - for example_param in scenario.get_example_params() |
| 91 | + return param_values.index(tuple(node_param_values)) |
| 92 | + return None |
| 93 | + |
| 94 | + def get_example_kwargs(self, node, params): |
| 95 | + params_names = (param['names'] for param in params) |
| 96 | + all_names = sum(params_names, []) |
| 97 | + return { |
| 98 | + example_param_name: force_unicode(node.funcargs[example_param_name]) |
| 99 | + for example_param_name in all_names |
90 | 100 | }
|
91 | 101 |
|
92 | 102 | @property
|
|
0 commit comments