为什么Django会测试打印输出?

时间:2016-07-19 09:46:00

标签: python django

我认为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)

1 个答案:

答案 0 :(得分:2)

您的wiktionary_lookup功能正在进行打印。您的测试用例不会改变wiktionary_lookup代码的功能 - 事实上,如果他们这样做,他们就不会是非常好的测试用例! (你将测试你改变的代码,而不是真正的东西。)如果你不想打印它,你可以使用记录器或类似François提到的东西。

这是关于日志记录的Django文档的链接: https://docs.djangoproject.com/en/1.9/topics/logging/