在测试用例中,有许多测试函数,所有测试函数都使用相同的数据。
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()函数或者是否有其他方法来执行此操作。提前谢谢
答案 0 :(得分:1)
如果您的测试都使用相同的数据,您可以使用fixture(即。用于测试的一堆'假'数据库条目)预填充TestCase。看看Django测试文档 Providing initial data for models和Test Case documentation。
基本上,你的应用程序中有一个 JSON / XML / YAML 文件,其中包含用于测试的初始数据:
[
{
"model": "app.somemodel",
"pk": 1,
"fields": {
"somefield": 'data',
"otherfield": 'otherdata',
}
},
# more test model instances to follow.
]
如果您正在使用 JSON a(上例中的s)并将文件命名为 initial_data.json ,则每次运行测试时都会自动加载它。否则,要指定要为特定TestCase加载哪些灯具,请将文件命名为: special_data.json 并告诉TestCase加载它:
class MyTest(TestCase):
fixtures = ['special_data',]
def test1:
do something
# etc
希望这有帮助!
我还应该提一下,尽管灯具是一种非常简单的方法,可以为测试目的提供初始数据,但它们有一些缺点。您可能想看看ModelFactores和why Carl Meyer thinks you should be using them。