我拥有的:
我有一个
TestBase.py
我将其用作抽象测试类。
from abc import abstractmethod
class TestBase:
expectData = None
def test_check_expectData(self):
if self.expectData is None:
raise NotImplementedError('you must have expectData')
@abstractmethod
def test_command_OK(self):
raise NotImplementedError('subclasses must override test_command()!')
我希望其他人继承
TestBase
. 例如
TestDemo.py
import unittest
from TestBase import TestBase
class TestDemo(unittest.TestCase, TestBase):
expectData = ["someData"]
def test_command_OK(self):
self.assertTrue(True)
if __name__ =='__main__':
unittest.main()
如果我跑步
python TestDemo.py
一切正常。如果我没有预期的日期,我会得到
NotImplementedError
如果我没有
test_command_OK
方法I获取
NotImplementedError: subclasses must override test_command()!
问题:
当我从安装程序运行测试套件时。py公司
python setup.py test
事情破裂了。我认为设置的原因。py正在运行
测试基地
单独和在
测试基地
班
expectedData
是
None
所以它没有通过测试。
====================================================================== ERROR: myProject.tests.TestDemo.TestBase.test_check_expectData
---------------------------------------------------------------------- Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
self.test(*self.arg) File "/Users/z002x6m/Desktop/myProject/tests/TestBase.py", line 49, in test_check_expectData
if self.expectData is None: AttributeError: TestBase instance has no attribute 'expectData'
====================================================================== ERROR: myProject.tests.TestDemo.TestBase.test_command_OK
---------------------------------------------------------------------- Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
self.test(*self.arg) File "/Users/z002x6m/Desktop/myProject/tests/TestBase.py", line 57, in test_command_OK
raise NotImplementedError('subclasses must override test_command()!') NotImplementedError: subclasses must override test_command()!
如果我打印出来
print(self.__class__)
在我的
test_check_expectData(self)
我得到的方法
<class '__main__.TestDemo'>
当我直接运行TestDemo时,一切正常。我明白了
myProject.tests.TestDemo.TestBase
当我跑步时
python设置。py试验
.
我有办法告诉你吗
setup.py
不运行
测试基地
班大概
@unittest.skipis , @unittest.skipif, @unittest.skipunless
? 但我不希望子类跳过这些require测试,因为我希望所有子类都有expectData。TestBase旨在用作模板,强制/检查子测试类具有以下所有要求
expectData
. 但它不应该单独运行。我怎样才能通过这个问题?我不介意建议,即使这意味着要重新调整我当前的测试框架