如何将参数传递给 Django 中的 TestCase?
How can I pass in a parameter to my TestCase in Django?
使用 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'
显然,上面的命令是行不通的。我想在我的测试 class 中将 'mammal' 作为 animal_family 发送到 __init__
方法。
将不胜感激。
虽然独立测试应该是最佳实践,但如果您真的想这样做,可以在执行测试命令时设置环境变量。
例如:
import os
from django.test import TestCase
from myapp.models import Animal
class AnimalTestCase(TestCase):
def setUp(self):
# Retrieve the animal family from the environment variable
animal_family = os.environ['animal_family']
Animal.objects.create(name="lion", sound="roar", family=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"')
然后调用测试命令如:
export animal_family=mammal;python manage.py test myapp.tests.AnimalTestCase
使用 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'
显然,上面的命令是行不通的。我想在我的测试 class 中将 'mammal' 作为 animal_family 发送到 __init__
方法。
将不胜感激。
虽然独立测试应该是最佳实践,但如果您真的想这样做,可以在执行测试命令时设置环境变量。
例如:
import os
from django.test import TestCase
from myapp.models import Animal
class AnimalTestCase(TestCase):
def setUp(self):
# Retrieve the animal family from the environment variable
animal_family = os.environ['animal_family']
Animal.objects.create(name="lion", sound="roar", family=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"')
然后调用测试命令如:
export animal_family=mammal;python manage.py test myapp.tests.AnimalTestCase