zoukankan      html  css  js  c++  java
  • 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:

     
  • 相关阅读:
    代码管理工具SonarQube的搭建和使用
    WebFlux Logs日志
    WebFlux WebClient异常处理
    WebFlux- WebClient(二)
    WebFlux- WebClient(一)
    WebFlux-Server-Sent Event服务器推送事件
    Reactive Stack
    Flink
    Gradle
    springboot
  • 原文地址:https://www.cnblogs.com/laoguigui/p/7404671.html
Copyright © 2011-2022 走看看