Django:跨多个文件分割测试,但共享同一个数据库?

2024-05-14 02:50:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是django1.8。我一直在一个名为test_api.py的长文件中为我的djangoapi编写测试。文件结构如下:

def setUpModule():
  management.call_command('loaddata', 'frontend/fixtures/data.json',
                        verbosity=0)
  management.call_command('my_custom_command')

def tearDownModule():
  management.call_command('flush', verbosity=0, interactive=False)


class TestAPIBNFViews(TestCase):
  def test_api_view_list_all(self):
    url = '/api/1.0/bnf_code'
    # do testing

def test_api_view_query(self):
    # more testint

fixtures和management命令在所有测试运行之前加载一次,到目前为止效果非常好。在

但是现在这个文件变得又长又笨拙,我想把它分成多个文件。我已经创建了多个名为test_listtest_query的文件,并如上所述给每个文件一个setUpModule部分。在

但是,首先这不是干的,其次当我运行python manage.py test时,许多测试都会失败,并出现重复的外键错误,例如:

^{pr2}$

我想这并不奇怪,因为测试多次尝试创建测试数据库。在

但是,如果我从除第一个测试(按文件名的字母顺序列出)之外的所有测试中删除setUpModule,则其他测试将失败,因为它们看不到任何数据。在

如何在所有测试运行之前运行setUpModule一次,并且为了方便起见,仍然将测试保存在单独的文件中?在


Tags: 文件pytestselfviewapidefcall
1条回答
网友
1楼 · 发布于 2024-05-14 02:50:07

与对两个测试类使用全局setUpModule不同的是,您也可以在每个TestCase类中使用一次setUpTestData。来自Django documentation: Testing tools

The class-level atomic block ... allows the creation of initial data at the class level, once for the whole TestCase.

相关问题 更多 >