我目前有一个Python unittest
测试用例,如下所示:
from unittest import TestCase as UTestCase
import inspect
class BaseParentTaskTest(UTestCase):
def test_case_one(self):
class A(BaseParentTask):
def run(self, a, b):
pass
instance = A()
print inspect.getargspec(instance.run).args
instance._validate()
if instance.valid:
self.fail("Failed to invalidate based on wrong argument count.")
def test_case_two(self):
class A(BaseParentTask):
def run(self, a, b, c, d):
pass
instance = A()
print inspect.getargspec(instance.run).args
if instance.valid:
self.fail("Failed to invalidate based on wrong argument kw names.")
从我的测试来看,在运行test_case_one
之后,A
类被保存在内存中,运行时不会被test_case_two
中的A
覆盖。这会导致test_case_two
失败。你知道吗
这可以从日志中看出。在test_case_one
中,预期的输出是(self, a, b)
,它是:
(self, a, b)
在test_case_two
中,预期的输出是(self, a, b, c, d)
:
(self, a, b)
然而,显然不是。你知道吗
为什么实例方法一退出A
类就不会被删除?我怎样才能解决这个问题使我的测试通过?你知道吗
很明显,芹菜是罪魁祸首,因为它在幕后做了一些奇怪的事情来促成这一切。你知道吗
通过在每个子类上定义
abstract
类变量,问题就消失了:我的理解是,除非用
@celery.task
注释注册,否则芹菜不会对该类做任何事情,但似乎它在内部仍然注册该类,而没有任何显式请求这样做。你知道吗相关问题 更多 >
编程相关推荐