【问题标题】:Selenium tests - Everything is printed all the time no matter whatSelenium 测试 - 无论如何都会打印所有内容
【发布时间】:2015-02-24 21:53:22
【问题描述】:

这听起来像是一个非常愚蠢的问题,但它是:

我正在用 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()

所以对于一个非常非常小的问题,这是很多信息: 在进行单元测试时,如果您在某处放了print,则只有在测试失败时才会打印。

那为什么在我的情况下,无论测试结果如何,都会打印每个prints?我只想在测试失败时打印我的current_url

另外,我只是在看看它为什么会这样。我正在积极寻找一种仅在测试失败时才打印它的方法。所以这部分得到了照顾。但我很好奇..

【问题讨论】:

    标签: python testing selenium printing unit-testing


    【解决方案1】:

    我几乎从不单独使用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

    但是,如果您使用类似nosetests test.py 的鼻子运行它(或者甚至只是在文件所在的目录中使用nosetests),您将不会在控制台上看到Foo。您必须使用-s--nocapture 运行它才能看到Foo

    【讨论】:

    • 哈!那是我没看到的!!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    • 2014-02-11
    • 2017-02-04
    • 2017-11-26
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多