selenium+unittest单元测试框架 自动化测试报告
在阅读虫师的Selenium2自动化测试实战,为了不让自己看了之后忘记,我还是写一下这个基于selenium的HTML测试报告
unittest是python自带的一个单元测试框架,我们利用unittest的一个扩展HTMLTestRunner生成HTML测试报告。(windows系统:下载HTMLTestRunner放到...\Python35\Lib目录下),HTMLTestRunner是基于Python2开发的,为了使其支持Python3,需要修改:
第94行 import StringIO 修改成 import io第539行 self.outputBuffer = StringIO.StringIO() 修改成 self.outputBuffer= io.StringIO()第642行 if not rmap.has_key(cls): 修改成 if notcls in rmap:
第631行 print >> sys.stderr, '\nTime Elapsed: %s' %(self.stopTime-self.startTime)修改成 print(sys.stderr, '\nTimeElapsed: %s' % (self.stopTime-self.startTime))第766行 uo = o.decode('latin-1')修改成 uo = e第722行 ue = e.decode('latin-1')
修改成 ue = e
以下就是百度测试的一个案例:
import unittest, time
from HTMLTestRunner import HTMLTestRunner
class Mytest(unittest.TestCase):
'''百度搜索测试''' def setUp(self): self.driver = webdriver.Chrome() self.driver.maximize_window() self.driver.implicitly_wait(10) self.base_url = "http://www.baidu.com" def test_baidu(self): '''搜索关键字:HTMLTestRunner''' driver = self.driver driver.get(self.base_url+"/") driver.find_element_by_id('kw').clear() driver.find_element_by_id('kw').send_keys('unitset') driver.find_element_by_id('su').click() #time.sleep(2) #title = driver.title #self.assertEqual(title,"unitset_百度sousuo") def tearDown(self): self.driver.quit() if __name__=="__main__": unittest.main() testunit = unittest.TestSuite() testunit.addTest(Mytest("test_baidu")) #按照一定格式获取当前时间 now = time.strftime("%Y-%m-%d %H_%M_%S") filename = './'+ now + 'result.html' #定义报告存放路径 fp = open(filename,'wb') #定义测试报告 runner = HTMLTestRunner(stream=fp, title='百度搜索测试报告', description='用例执行情况') runner.run(testunit) fp.close()

以上只是针对单个测试文件生成的测试报告,对于集成测试报告
test_case文件夹下有两个测试用例,分别为:
#百度测试文档 from selenium import webdriver import unittest from HTMLTestRunner import HTMLTestRunner import time class Mytest(unittest.TestCase): '''百度搜索测试''' def setUp(self): self.driver = webdriver.Chrome() self.driver.maximize_window() self.driver.implicitly_wait(10) self.base_url = "http://www.baidu.com" def test_baidu(self): '''搜索关键字:HTMLTestRunner''' driver = self.driver driver.get(self.base_url+"/") driver.find_element_by_id('kw').clear() driver.find_element_by_id('kw').send_keys('unitset') driver.find_element_by_id('su').click() #time.sleep(2) #title = driver.title #self.assertEqual(title,"unitset_百度sousuo") def tearDown(self): self.driver.quit() if __name__=="__main__": unittest.main()
#有道测试 from selenium import webdriver import unittest import time class Mytest(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() self.driver.maximize_window() self.driver.implicitly_wait(10) self.base_url = "http://www.youdao.com" def test_youdao(self): driver = self.driver driver.get(self.base_url+"/") driver.find_element_by_id('translateContent').clear() driver.find_element_by_id('translateContent').send_keys('webdriver') driver.find_element_by_xpath('//*[@id="form"]/button').click() #time.sleep(2) #title = driver.title #self.assertEqual(title,"webdriver_有道搜索") def tearDown(self): self.driver.close() if __name__=="__main__": unittest.main()
我们对runtest进行修改:
#指定测试用例为当前文件夹下的test_case目录 test_dir = './test_case' discover = unittest.defaultTestLoader.discover(test_dir,pattern = 'test_*.py') if __name__=='__main__': #执行测试 #runner = unittest.TextTestRunner() #runner.run(suite) now = time.strftime("%Y-%m-%d %H_%M_%S") filename = './'+ now + 'result.html' #定义报告存放路径 fp = open(filename,'wb') #定义测试报告 runner = HTMLTestRunner(stream=fp, title='测试报告', description='用例执行情况') runner.run(discover) fp.close()
最终生成2017-08-21 15_26_03result:

浙公网安备 33010602011771号