【发布时间】:2018-10-23 09:36:12
【问题描述】:
使用 Django 自己的文档中示例的编辑版本,假设我的代码如下所示:
from django.test import TestCase
from myapp.models import Animal
class AnimalTestCase(TestCase):
def __init__(self, animal_family):
self.animal_family = animal_family
def setUp(self):
Animal.objects.create(name="lion", sound="roar", family=self.animal_family)
def test_animals_can_speak(self):
"""Animals that can speak are correctly identified"""
lion = Animal.objects.get(name="lion")
self.assertEqual(lion.speak(), 'The mammal lion says "roar"')
基本上,我想将 animal_family 参数传递到我的测试中,或者至少从我的终端传递类似的东西。像这样的
python manage.py test myapp.tests.AnimalTestCase 'mammal'
显然,上面的命令不起作用。我想将“哺乳动物”作为 animal_family 发送到我的测试类中的 __init__ 方法。
我们将不胜感激。
【问题讨论】:
-
为什么要这样做?测试需要自包含。如果您想使用一系列参数进行测试,则应在测试中定义这些参数本身。
-
@DanielRoseman 好的,但有可能吗?
-
正如@DanielRoseman 所说,测试不应依赖于传递参数。如果你想有多个选项,那么你应该编写多个测试。
-
但是有没有办法做到这一点?我意识到测试应该是自包含的,以及所有其他约定,但这会为我节省很多时间。
标签: django django-tests