硒测试一切都是印刷的所有时间,无论什么

2024-10-04 11:23:52 发布

您现在位置:Python中文网/ 问答频道 /正文

这听起来可能是一个非常愚蠢的问题,但事实是:

我正在用python编写selenium测试,基本上我的基本测试类如下所示:

chromedriver = "../selenium-tests/chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver

class TestsFoo(unittest.TestCase):
    base_url = None
    language = None

    def setUp(self):
        self.driver = webdriver.Chrome(chromedriver)
        self.verificationErrors = []
        self.accept_next_alert = True
        self.driver.set_window_size(1100, 800)

然后我的所有其他测试类都从这个类扩展而来。示例:

class TestsFooChild(TestsFoo):
    def test_something(self):
        driver = self.driver
        driver.get("{}{}/myurl.html".format(
            self.base_url,
            self.language)
        )
        # do stuff

        print driver.current_url
        self.assertTrue(somethingTrue)

    def tearDown(self):
        self.driver.close()
        self.driver.quit()

languageurl是这样定义的:

if __name__ == "__main__":
    TestsFoo.base_url = os.environ.get('URL')
    TestsFoo.language = os.environ.get('LANGUAGE')
    unittest.main()

这是一个非常小的问题的大量信息: 在进行unittest时,如果将print放在某个地方,则只有在测试失败时才会打印它。你知道吗

那么在我的例子中,为什么不管测试结果是什么,都要打印每个print?我只想在测试失败时打印我的current_url。你知道吗

还有,我只是想知道为什么会这样。我正在积极地寻找一种只有在测试失败时才打印出来的方法。所以那部分已经处理好了。但我很好奇。。你知道吗


Tags: selfurlbasegetosdefdriverselenium
1条回答
网友
1楼 · 发布于 2024-10-04 11:23:52

我几乎从不单独使用unittest,但据我所知,print导致输出到控制台是unittest的默认行为。下面是一个示例文件:

import unittest

class Test(unittest.TestCase):

    def test_one(self):
        print "Foo"

if __name__ == "__main__":
    unittest.main()

如果您将它另存为test.py并与python test.py一起运行,您将在控制台上打印Foo。你知道吗

但是,如果您使用这样的nose运行它nosetests test.py(甚至只是在文件所在的目录中nosetests),您将不会在控制台上看到Foo。您必须用-s nocapture运行它才能看到Foo。你知道吗

相关问题 更多 >