skipped = str([error[0] for error in self._outcome.result.skipped]) TypeError: 'int' object is not iterable
时间: 2024-02-28 07:54:17 浏览: 31
这段代码的错误是因为self._outcome.result.skipped是一个整数,而不是一个可迭代的对象。因此,无法使用列表推导式来生成一个包含跳过测试用例名称的字符串。
要解决这个错误,需要根据self._outcome.result.skipped是否为0来分别处理。如果它为0,那么跳过的测试用例数为0,可以直接将skipped赋值为空字符串。如果它不为0,那么就需要遍历self._outcome.result.skipped,将其中每个测试用例的名称加入到一个列表中,最后使用join方法将列表转换为一个字符串,如下所示:
```python
skipped = self._outcome.result.skipped
if skipped == 0:
skipped_str = ''
else:
skipped_list = [error[0] for error in skipped]
skipped_str = ', '.join(skipped_list)
```
相关问题
self._outcome.result
self._outcome.result是一个对象,代表了测试结果。它包含了测试用例执行的详细信息,包括测试用例的总数、通过的测试用例数、失败的测试用例数、出错的测试用例数、跳过的测试用例数等等。可以通过访问它的属性来获取这些信息。比如:
- self._outcome.result.testsRun:测试用例的总数
- self._outcome.result.success_count:通过的测试用例数
- self._outcome.result.failure_count:失败的测试用例数
- self._outcome.result.error_count:出错的测试用例数
- self._outcome.result.skipped_count:跳过的测试用例数
这个对象可以用于测试报告的生成或者对测试结果的分析。
def skip_dependon(depend): """ :param depend: 依赖的用例函数名,默认为空 :return: wraper_func """ def wraper_func(test_func): @wraps(test_func) # @wraps:避免被装饰函数自身的信息丢失 def inner_func(self): if depend == test_func.__name__: raise ValueError("{} cannot depend on itself".format(depend)) failures = str([fail[0] for fail in self._outcome.result.failures]) errors = str([error[0] for error in self._outcome.result.errors]) # skipped = str([error[0] for error in self._outcome.result.skipped]) or (depend in skipped) flag = (depend in failures) or (depend in errors) if failures.find(depend) != -1: test = unittest.skipIf(flag, "{} failed".format(depend))(test_func) elif errors.find(depend) != -1: test = unittest.skipIf(flag, "{} error".format(depend))(test_func) # elif skipped.find(depend) != -1: # test = unittest.skipIf(flag, "{} skipped".format(depend))(test_func) else: test = test_func return test(self) return inner_func return wraper_func
这是一个装饰器函数,用于给unittest的测试用例函数添加依赖关系。它接受一个参数`depend`,表示这个测试用例函数依赖的函数名,默认为空。它返回一个函数`wraper_func`,这个函数又返回一个函数`inner_func`,这个函数是对测试用例函数进行装饰的实际函数。
`inner_func`中首先对依赖函数名进行判断,如果依赖函数名和测试用例函数名相同,则抛出异常,因为一个测试用例不能依赖于自己。
然后通过`self._outcome.result`来获取测试结果,并判断依赖函数的测试结果。如果依赖函数执行失败(failures),则用`unittest.skipIf`装饰器将测试用例函数标记为跳过,跳过的原因是依赖函数执行失败。同样的,如果依赖函数执行出错(errors),也会将测试用例函数标记为跳过。
最后返回装饰后的测试用例函数。