有没有办法TestCase使用nosetests基于自定义条件跳过整个?我的意思是unittest.skip*风格.
我试过了
import unittest
@unittest.skip("No reason")
class TestFoo(object):
def test_foo(self):
assert False
Run Code Online (Sandbox Code Playgroud)
我发现这个工作使用python <= 2.7.3(显然是偶然的),但在python 2.7.6中没有.
有没有鼻子测试方法,或者我必须创建自己的装饰器?
笔记:
unittest.TestCase它的作用,但这不是我需要的.setUpClass加注时起作用SkipTest,但看起来很笨拙.nottest装饰器,但它没有将测试标记为跳过.摘要
SkipTest在setUpClass不是因为nosetests在某些情况下,一个好主意,不会teardownContext在这些情况下.如果涉及插件,这可能会产生不利影响.我们有许多数据类,代表具有共同祖先的各种结果Result。然后,每个结果使用其自己的 子类提供其数据ResultData。但我们很难正确注释该案例。
我们想出了以下解决方案:
from dataclasses import dataclass
from typing import ClassVar, Generic, Optional, Sequence, Type, TypeVar
class ResultData:
...
T = TypeVar('T', bound=ResultData)
@dataclass
class Result(Generic[T]):
_data_cls: ClassVar[Type[T]]
data: Sequence[T]
@classmethod
def parse(cls, ...) -> T:
self = cls()
self.data = [self._data_cls.parse(...)]
return self
class FooResultData(ResultData):
...
class FooResult(Result):
_data_cls = FooResultData
Run Code Online (Sandbox Code Playgroud)
但它最近因 mypy error 停止工作ClassVar cannot contain type variables [misc]。它也反对 PEP 526,请参阅https://www.python.org/dev/peps/pep-0526/#class-and-instance-variable-annotations,我们之前错过了。
有没有办法正确注释这个案例?
我试图在类上使用弱引用,在这些类上我使用插槽来节省一些内存,但无法创建派生类。
class A(object):
__slots__ = ['__weakref__']
class B(A):
__slots__ = A.__slots__ + ['foo']
#TypeError: Error when calling the metaclass bases
# __weakref__ slot disallowed: either we already got one, or __itemsize__ != 0
Run Code Online (Sandbox Code Playgroud)
诀窍在哪里?我没有找到任何解决方案。我正在使用python 2.7.3。