我有一个电子商务应用程序,其中包含product
,order
,checkout
等子应用程序。在每个应用程序中,我都有一个tests.py
文件,其中包含对应用程序中隔离部分的测试。
许多不同的测试用例/子应用程序使用相同类型的数据。例如,产品测试,订单测试和结账测试都需要有产品,购物车,货币等的样本数据。
目前,我在每个setUp
的{{1}}函数中创建此测试数据。但这意味着我一遍又一遍地创建相同的数据,这看起来非常愚蠢和不必要。
我是否有办法创造"全球"我测试数据库的测试数据?在运行任何TestCase之前,这将首先创建?或者我已经在做了#34;正确的"方式,即使它看起来很糟糕?
我正在使用Django,它正在使用TestCase
python模块。
答案 0 :(得分:0)
在我看来,单元测试应尽可能与其他单元测试隔离开来。否则,更改测试运行的顺序可能会导致先前通过的测试失败(反之亦然)。因此,我建议您在每次测试之前继续设置和拆除数据库。根据我的经验,您通常只需要为每个测试设置一些项目 - 并且相同的设置代码通常可以由多个测试共享(例如,将该代码放在基类的setUp
方法中)。
当然,有提议进行设置(多次测试)的论据 - 例如在setUpClass
方法中甚至是setUpModule
...主要论点是它可能在运行测试时节省一点时间 - 这对我来说从来都不是问题,因为我的测试总是很少在一两秒内运行 - 对我来说,Grokking输出比运行测试需要更长的时间,所以我从来没有过多地担心过。另一个优点是你可以获得更像“类似生产”的环境 - 但一般来说,如果你的代码足够孤立,可以轻松进行单元测试,那可能不是什么大问题。