1

在测试用例中,有很多测试函数,所有的测试函数都使用相同的数据。

class Mytest(TestCase):
    def init_data(self):
        insert data1
        insert data2
        .....
    def test1:
        do something
    def test2:
        do something
    ....

我应该在哪里调用 init_data 函数。如果我在所有测试函数中调用该函数,它会多次插入数据并影响结果。我想我可以在第一个测试函数中调用 init_data 。但是当我编写许多测试函数时,我发现 djang 调用的第一个测试函数不是我编写的第一个测试函数。那么我应该如何调用 init_data() 函数或者是否有其他方法可以做到这一点。提前致谢

4

1 回答 1

2

如果您的测试都使用相同的数据,您可以使用固定装置(即您用于测试的一堆“假”数据库条目)预先填充 TestCase 。查看有关 为模型提供初始数据测试用例文档的 Django 测试文档

基本上,您拥有的是应用程序中的JSON/XML/YAML文件,其中包含用于测试的初始数据:

[
  {
    "model": "app.somemodel",
    "pk": 1,
    "fields": {
      "somefield": 'data',
      "otherfield": 'otherdata',
    }
  },
  # more test model instances to follow.
]

如果您使用JSON a(在上面的示例中)并将文件命名为initial_data.json,它将在您每次运行测试时自动加载。否则,要为特定的测试用例指定要加载的固定装置,请将文件命名为:special_data.json并告诉测试用例加载它:

class MyTest(TestCase):
    fixtures = ['special_data',]

    def test1:
        do something
    # etc

希望这可以帮助!

我还应该提到,虽然固定装置是一种为测试目的提供初始数据的简便方法,但它们也有一些缺点。您可能会想看看ModelFactores以及为什么 Carl Meyer 认为您应该使用它们

于 2014-02-11T11:01:23.903 回答