我已经开始使用Python Selenium并编写了如下所示的脚本。
这将打印链接到失败的测试的返回代码(test01,test02,test03,..)。
忽略每项测试都检查相同的事情。
我只是想了解是否有更简洁的方法来编写测试,因为每个人都重复声明keyWordList.push("ad"); // first element
keyWordList.push("ad-block"); // second element
keyWordList.push("ad-container");
keyWordList.push("ad-div"); // last Element
,然后有global res
阻止。
有人可以就如何改善这一点提出一些建议吗?
try/except
答案 0 :(得分:4)
根本不需要全局变量。你在课堂上;始终使用self.res
。
答案 1 :(得分:2)
这正是setUp
实例方法的用途,非常类似于每个测试类运行一次的setUpClass
方法。
def setUp(self):
# this code will be executed before each and every test
self.res = 0
def tearDown(self):
# this code will be executed post each and every test.
顺便问一下,为什么要使用全局变量?没有必要。事实上,使用全局变量很少有正当理由。此外,测试需要孤立和独立,使用全局变量将违反该规则。
答案 2 :(得分:0)
感谢上面的提示。我已将代码缩减到此版本,希望看起来更清晰,更标准:
class Login(unittest2.TestCase):
@classmethod
def handleError(self, e, res):
print ("Test failed with exception: %s" % e)
self.result = res
sys.exit()
@classmethod
def setUpClass(self):
binary = FirefoxBinary('C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe')
self.driver = webdriver.Firefox(firefox_binary=binary)
self.base_url = "https://stackoverflow.com"
self.result = 0
def test01(self):
driver = self.driver
try:
self.assertEqual("Ask a Question", driver.title)
except Exception,e:
self.handleError(e, 1)
def test02(self):
driver = self.driver
try:
self.assertEqual("Ask a Question", driver.title)
except Exception,e:
self.handleError(e, 2)
def test03(self):
driver = self.driver
try:
self.assertEqual("Ask a Question", driver.title)
except Exception,e:
self.handleError(e, 3)
@classmethod
def tearDownClass(self):
self.driver.quit()
print ("res=%s") % self.result
if __name__ == "__main__":
unittest2.main()