【发布时间】:2017-02-14 00:36:09
【问题描述】:
我正在编写一个 django 命令,它需要大量输入并对其进行处理。
由于数据量大,输入应该以文件或标准输入的形式出现,这似乎很自然。
我想轻松地对其进行测试,我的意思是说,无需在我的测试环境中创建一堆文件。
现在,我记得某处(找不到正确的文档,but I did find the "PR"),“-”应该从标准输入读取,但我无法让它工作。
似乎该命令应该执行以下操作:
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument("foo", type=file)
def handle(self, *args, **options):
file = options["foo"]
# Then read the file, and process it
但是当我在命令行上运行命令时,它不喜欢- 参数(说它不是文件)。
command docs 建议写信给self.stdout 以获得更好的测试。我为 self.stdin 尝试了类似的方法,但也无法正常工作。
当然,这是一种常见的模式,但我找不到任何关于如何做到最好的帮助。似乎“应该有一种——最好只有一种——明显的方法。”,但我找不到。我有什么遗漏吗?
【问题讨论】:
-
如果能解决问题,我会创建一堆文件作为我的测试夹具。我不认为这种方式不好
-
你是如何编写测试的? “-”在哪里?
-
@Ming 我希望我的测试很简单,所以它们大多只是其中只有一行的文件,甚至是一个单词,而且不得不去查看文件似乎很烦人看看里面有什么。通过单个项目的测试似乎更干净。
-
@Ming 我对“-”的测试是在命令行上运行的(编辑问题以更好地反映这一点)
标签: python django django-commands