今天在开发一个测试自动化脚本的时候,出现了一个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的一定要注意缩进问题!还有点复制粘贴代码需谨慎。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。