今天在開發一個測試自動化腳本的時候,出現了一個BUG卡的蠻久的。使用的框架是unittest;這個框架可以自動執行腳本里的方法,下面看代碼(這個代碼是正常沒問題的)
import unittest
import BeautifulReport
from selenium import webdriver
class Test(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Edge()
self.driver.get('https://www.baidu.com/')
def test_01(self):
'''測試用例01'''
self.driver.find_element_by_id('kw').send_keys('1111')
def test_02(self):
'''測試用例02'''
self.driver.find_element_by_id('kw').send_keys('222')
def test_03(self):
'''測試用例03'''
self.driver.find_element_by_id('kw').send_keys('333')
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
testunit = unittest.TestSuite()
# 加載用例
#掛載類並執行裏面所有的方法
testunit.addTests(unittest.TestLoader().loadTestsFromTestCase(Test))
result = BeautifulReport.BeautifulReport(testunit)
result.report(filename='report', description='測試報告', log_path=None)
由於本人以前用的是java類語言,所以對縮進沒什麼概念,導致
if __name__ == '__main__':
testunit = unittest.TestSuite()
# 加載用例
testunit.addTests(unittest.TestLoader().loadTestsFromTestCase(Test))
result = BeautifulReport.BeautifulReport(testunit)
result.report(filename='report', description='測試報告', log_path=None)
語句縮進和"def tearDown(self):"一樣,導致這個if語句的作用域是在tearDown中,從而導致運行這個自動化腳本閃退。
解決方案把"if name == '__main__': 。。。。。"語句和class類同級就行了。
順便説一下我的調試方法:1.用python的logging方法打印信息;2.用debugger打斷點來進行調試。
總結:對於java,js,c,c++轉過來學python的一定要注意縮進問題!還有點複製粘貼代碼需謹慎。