selenium+unittest单元测试框架 自动化测试报告

在阅读虫师的Selenium2自动化测试实战,为了不让自己看了之后忘记,我还是写一下这个基于selenium的HTML测试报告

unittest是python自带的一个单元测试框架,我们利用unittest的一个扩展HTMLTestRunner生成HTML测试报告。(windows系统:下载HTMLTestRunner放到...Python35Lib目录下),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, ' Time Elapsed: %s' %(self.stopTime-self.startTime)
修改成     print(sys.stderr, ' TimeElapsed: %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:

 
原文地址:https://www.cnblogs.com/laoguigui/p/7404671.html