0

我似乎无法让 test2 中的 Test1.test_something() 工作..不确定是不是因为它们都继承自同一个基础?

助手.py:

class baseTest(unittest.TestCase):
    def setUp(self, param="Something"):
        print param
        pass 

测试1.py

from Helper import baseTest

class test1(baseTest):

    def setUp(self):
        super(test1, self).setUp('foo')        

    def test_something(self):
        assert 1 == 1, "One does not equal one."

测试2.py

from Helper import baseTest
import Test1

class test2(baseTest):

    def setUp(self):
        super(test2, self).setUp('bar')

    def test_something(self):
        Test1.test_somehing()

现在,我以前有这个工作,当我在他们的类中为 test1 和 test2 设置了 setUp 时,但是一旦我让它们都从 baseTest 继承,我开始得到一个unbound method <method> must be called with Test instance as first argument (got nothing instead). 有什么建议么?

4

2 回答 2

0

问题是这Test1.test_something()是一个实例方法,而不是类方法。所以你不能这样称呼它(此外,即使它是类方法,它也应该是Test1.test1.test_something)。

一种方法(不搞乱unittest.TestCase机制):

Test2.py

import Test1

class test2(Test1.test1):
    # whatever else

你就完成了,自动test2继承Test1.test1.test_something()。如果你需要你test2的 'stest_something做额外的事情,只需super(test2, self).test_something()在你重写的test_somethingin test2class 定义中做。

于 2013-07-25T19:58:51.287 回答
0

将两者Test1Test2类共享的测试移动到BaseTest

测试.py:

import unittest
import sys

class BaseTest(unittest.TestCase):
    def setUp(self, param="Something"):
        print param
        pass
    def test_something(self):
        assert 1 == 1, "One does not equal one."    

class Test1(BaseTest):
    def setUp(self):
        super(Test1, self).setUp('foo')        

测试2.py:

import test
import unittest
import sys

class Test2(test.BaseTest):
    def setUp(self):
        super(Test2, self).setUp('bar')
于 2013-07-25T20:05:29.750 回答