selenium webdriver (13) -- 结合pyunit生成测试报告

梦想与她 提交于 2020-04-22 02:54:09

测试包含测试用例设计,测试执行,测试报告输出

测试用例设计一般是静态的,以文档的方式进行存储

测试执行,可以是手动的,也可以自动化用例执行

测试报告,可以是手动的,按照一定格式的测试报告,也可以是自动化生成的,其目的是看清哪些用例测试成功,哪些用例测试失败

这边以一个小的测试为例来说明,自动化测试如何从头到尾的进行

测试目录如图

test_project/
.............report/                          测试报告
.............test_case/                       测试用例
.............runtest.py                       测试执行

首先设计两个用例,测试百度搜索页以及有道翻译页

test_baidu.py

#coding:utf-8

import sys                                                 #编码问题
reload(sys)
sys.setdefaultencoding('utf8')

from selenium import webdriver
import unittest
import time

class MyTest(unittest.TestCase):                           #测试用unittest测试工具
    
    def setUp(self):
        self.driver = webdriver.Firefox()        
        self.driver.maximize_window()        
        self.driver.implicitly_wait(10)        
        self.base_url = "http://www.baidu.com"        
        
    def test_baidu(self):
        driver = self.driver
        driver.get(self.base_url+'/')        
        driver.find_element_by_id("kw").clear()        
        driver.find_element_by_id("kw").send_keys("unittest")        
        driver.find_element_by_id("su").click()        
        time.sleep(2)        
        title = driver.title
        self.assertEqual(title, "unittest_百度搜索")        #检查点是跳转页面标题     
        
    def tearDown(self):
        self.driver.close()        
        
if __name__ == '__main__':                                #该文件以模块方式存在,如果直接执行该文件,则文件名为'__main__',执行main函数
    unittest.main()

test_youdao.py

#coding:utf-8

import sys
reload(sys)
sys.setdefaultencoding('utf8')

from selenium import webdriver
import unittest
import time

class MyTest(unittest.TestCase):
    
    def setUp(self):
        self.driver = webdriver.Firefox()        
        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_id("translateContent").submit()
        time.sleep(2)        
        title = driver.title
        print title
        self.assertEqual(title, "【webdriver】什么意思_英语webdriver的翻译_音标_读音_用法_例句_在线翻译_有道词典")        
        #检查点是跳转的页面标题 
    def tearDown(self):
        self.driver.close()        
        
if __name__ == '__main__':
    unittest.main()

run_test.py

import unittest
import test_case.test_baidu
import test_case.test_youdao
from HTMLTestRunner import HTMLTestRunner          #首先下载一个HTMLTestRunner.py放到sys.path中,可以进行导入用HTMLTestRunner产生一个HTML的测试报告
import time

#suite = unittest.TestSuite()
#
#suite.addTest(test_baidu.MyTest('test_baidu'))
#suite.addTest(test_youdao.MyTest('test_youdao'))
test_dir = './test_case'                           #测试用例存放路径以当前目录进行寻找

#当用例很多,并且放在很多文件中,此时如果还是用suite一个一个加用例到suite中再执行就会显得很麻烦,
#discover也是一个自动化过程,在一个路径下,自动匹配test*.py的文件作为测试用例
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 = './report/' + now + 'result.html'     #产生文件名包括路径,这样每次产生的文件不重名   
    fp = open(filename, 'wb')                        #以写的方式打开文件
    runner = HTMLTestRunner(stream=fp,               #HTMLTestRunner生成实例 
                            title='百度搜索测试报告',
                            description='用例执行情况:')                                                        
    runner.run(discover)                             #跑discover中的所有用例

参考:

Selenium2自动化测试实战》

selenium python buildings release 2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!