Selenium 测试 - 无论如何都会打印所有内容
Selenium tests - Everything is printed all the time no matter what
这听起来像是一个非常愚蠢的问题,但它是:
我正在 python 中编写 selenium 测试,基本上我的基础测试 class 看起来像这样:
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 都是从那个 class 扩展而来的。示例:
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()
language
和 url
的定义归功于此:
if __name__ == "__main__":
TestsFoo.base_url = os.environ.get('URL')
TestsFoo.language = os.environ.get('LANGUAGE')
unittest.main()
对于一个非常非常小的问题,这是很多信息:
在做单元测试时,如果你在某处放了一个print
,它只会在测试失败时打印出来。
那为什么在我的例子中,无论测试结果如何,每 print
s 都会打印一次?我只想在测试失败时打印我的current_url
。
此外,我只是在研究它为什么会这样。我正在积极寻找一种仅在测试失败时打印它的方法。所以这部分得到了照顾。但是我很好奇..
我几乎从不单独使用 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
。
这听起来像是一个非常愚蠢的问题,但它是:
我正在 python 中编写 selenium 测试,基本上我的基础测试 class 看起来像这样:
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 都是从那个 class 扩展而来的。示例:
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()
language
和 url
的定义归功于此:
if __name__ == "__main__":
TestsFoo.base_url = os.environ.get('URL')
TestsFoo.language = os.environ.get('LANGUAGE')
unittest.main()
对于一个非常非常小的问题,这是很多信息:
在做单元测试时,如果你在某处放了一个print
,它只会在测试失败时打印出来。
那为什么在我的例子中,无论测试结果如何,每 print
s 都会打印一次?我只想在测试失败时打印我的current_url
。
此外,我只是在研究它为什么会这样。我正在积极寻找一种仅在测试失败时打印它的方法。所以这部分得到了照顾。但是我很好奇..
我几乎从不单独使用 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
。