Django 允许从 testrunner 类添加自定义命令行选项。您可以创建默认 testrunner 类的子类并添加您自己的选项,然后让 django 使用您的自定义 testrunner,如下所示。
例如,在您的 Django 项目目录中创建一个 testrunner.py,其中包含:
from django.test.runner import DiscoverRunner
class TestRunner(DiscoverRunner):
def __init__(self, option=None, **kwargs):
super().__init__(**kwargs)
print("Passed option: {}".format(option))
@classmethod
def add_arguments(cls, parser):
DiscoverRunner.add_arguments(parser)
parser.add_argument('-o', '--option', help='Example option')
这是一个从默认运行程序派生的测试运行程序(因此它的工作方式与默认运行程序一样),只是它告诉 django 添加一个额外的命令行选项(在add_arguments()
类方法中)并在构造函数中处理这个额外选项的值。要使用这个新的跑步者运行,请按如下方式传递其名称:
./manage.py test --testrunner=testrunner.TestRunner -o foo
当然,您可以将此类放在其他任何地方,只要您在命令行上将完整的导入名称传递给它。
请注意,您必须使用--testrunner=foo
,不能使用两个单独的参数 ( --testrunner foo
),因为这样额外的参数不起作用。正在等待修复:https ://github.com/django/django/pull/10307
此示例仅打印选项值,但您需要以某种方式将其传递给您的测试用例。我找不到有关如何将选项传递给 unittest 测试用例的任何快速信息,但您可能只使用全局(模块级别)变量或类变量(这不是那么可重入和优雅,但很容易和作品)。