我认为Django不应该在测试中打印任何输出....我有一些打印语句可以帮助我输入数据,我已经为它们写了TestCase
,但是当测试运行时他们将所有输出打印到终端,这很烦人。
有没有办法阻止django在测试时打印它们?为什么不这样做呢?
模型方法:
def wiktionary_lookup(self, wiktionary_prefix, driver):
driver.get("http://%s.wiktionary.org/wiki/%s" % (wiktionary_prefix, self.name))
definitions = driver.find_elements_by_xpath("//h3/following-sibling::ol/li")
count = 0
defs_list = []
print "\tWIKTIONARY DEFINITIONS:\n"
for i in definitions:
i = i.text.split('\n')
for j in i:
#Takes out an annoying "[quotations]" in the end of the string, soemtimes.
j = re.sub(u'\u2003\[quotations \u25bc\]', '', j)
print "\t%d. %s" % (count, j)
defs_list.append(j)
count += 1
print "\n"
return defs_list
测试:
def test_wiktionary_lookup(self):
language = Language.objects.create(name='eng', full_name='English')
word = Word.objects.create(language=language, name='testword')
driver = webdriver.Chrome()
output = word.wiktionary_lookup('en', driver)
self.assertTrue(len(output) == 0)
word = Word.objects.create(language=language, name='table')
output = word.wiktionary_lookup('en', driver)
self.assertTrue(len(output) > 0)
答案 0 :(得分:2)
您的wiktionary_lookup
功能正在进行打印。您的测试用例不会改变wiktionary_lookup
代码的功能 - 事实上,如果他们这样做,他们就不会是非常好的测试用例! (你将测试你改变的代码,而不是真正的东西。)如果你不想打印它,你可以使用记录器或类似François提到的东西。
这是关于日志记录的Django文档的链接: https://docs.djangoproject.com/en/1.9/topics/logging/