我有一些用django进行单元测试的文件:
test1.py
class Test1(unittest.TestCase):
def setUp(self):
...
def tearDown(self):
...
test1.py
class Test1(unittest.TestCase):
def setUp(self):
...
def tearDown(self):
...
testn.py
class Testn(unittest.TestCase):
def setUp(self):
...
def tearDown(self):
...
我想创建一个全局设置来为所有测试做一些配置,例如:
some_file.py
class GlobalSetUpTest(SomeClass):
def setup(self): # or any function name
global_stuff = "whatever"
可能吗?如果是这样,怎么样?提前谢谢。
答案 0 :(得分:7)
您可以使用自定义全局setUp
方法创建父类,然后让所有其他测试类扩展该类:
class MyTestCase(unittest.TestCase):
def setUp(self):
self.global_stuff = "whatever"
class TestOne(MyTestCase):
def test_one(self):
a = self.global_stuff
class TestTwo(MyTestCase):
def setUp(self):
# Other setUp operations here
super(TestTwo, self).setUp() # this will call MyTestCase.setUp to ensure self.global_stuff is assigned.
def test_two(self):
a = self.global_stuff
显然,您可以对“全局”tearDown
方法使用相同的技术。
答案 1 :(得分:0)
如果您希望所有测试仅运行一次,则可以通过在其中一个应用中放置management/commands/test.py
来覆盖测试管理命令:
from django.core.management.commands import test
class Command(test.Command):
def handle(self, *args, **options):
# Do your magic here
super(Command, self).handle(*args, **options)
不幸的是,这不适用于PyCharm。 在PyCharm中,您可以改为使用“ Before Lunch”任务。