【发布时间】:2012-12-20 23:03:22
【问题描述】:
我在使用 python 中的单元测试运行硒测试的聚合测试套件时遇到问题。
下面的代码在没有调用 testRunner 的情况下从另一个模块执行测试。
当我尝试在调试模式下执行时,控制权在执行类定义行并最终在另一个模块(gmailbutton)中执行测试后不久就被传递给了 pydev_runfiles。
import unittest
from selenium import webdriver
from gmailbutton import gmailButton
class runner():
def runner1(self):
suite = unittest.TestSuite()
suite.addTest(gmailButton)
return suite
根据文档(http://docs.python.org/2/library/unittest.html),上面的代码只需将测试用例添加到套件中,测试就应该在
unittest.TextTestRunner(verbosity=2).run(suite)
这里没有发生。
gmailButton 的测试代码在这里
import unittest
from selenium import webdriver
class gmailButton(unittest.TestCase):
global browser
def test_gmailButton(self):
browser = webdriver.Firefox()
try:
browser.get("http://www.gmail.com")
browser.find_element_by_id("Email").send_keys("abcd")
browser.find_element_by_id("Passwd").send_keys("123445")
browser.find_element_by_id("signIn").click()
except Exception as e:
raise
print e
finally:
browser.close()
更新:
这是我从 eclipse 中执行的确切代码。
import unittest
from selenium import webdriver
from gmailbutton import gmailButton
from pyUnitExercise import exercise1
class runner():
def runner1(self):
suite = unittest.TestSuite()
suite.addTest(gmailButton)
return suite
if __name__ == "__main__":
unittest.TextTestRunner(verbosity=2).run(runner.suite)
我对此代码的期望是执行 gmailButton 测试用例,而不是执行刚刚导入且未添加到测试套件中的 exercise1。我不知道它为什么要执行刚刚导入但未添加到测试套件中的测试。
【问题讨论】:
-
运行时发生了什么?您收到任何错误或消息吗?
-
我没有收到任何错误。相反,gmailButton 脚本被执行。我试图了解为什么会发生这种情况。
-
对不起,我没有关注。它在没有你调用
unittest.TextTestRunner(verbosity=2).run(suite)的情况下执行吗?我无法用上面的代码重现问题。 -
是的。这是正确的。它在不调用 unittest.TextTestRunner(verbosity=2).run(suite) 的情况下执行请注意,gmailbutton.py 是我在另一个模块中导入的不同模块。
-
gmailbutton.py中还有其他内容吗?也许它在导入时运行?如果是这样,你应该使用if __name__ == "__main__": main()
标签: python unit-testing selenium webdriver