美文网首页Python自动化Python自动化测试
[SP_10] 单元测试(UnitTest)之Web测试应用实战

[SP_10] 单元测试(UnitTest)之Web测试应用实战

作者: Fighting_001 | 来源:发表于2018-07-18 01:19 被阅读0次

    目录结构

    一、编写Web测试用例
    二、测试报告生成
    三、测试报告颜值优化
    

    一、编写Web测试用例

    案例:Baidu搜索关键词"百度",在搜索结果页面中,验证页面的Title内容,然后根据页面中定位到链接文字进行点击打开新页面

    项目文件目录

    --TestBaidu 文件夹
        --TestCase 文件夹
            --test_baidu.py
        --runtest.py
    

    test_baidu.py

    from selenium import webdriver
    from time import sleep
    import unittest
    
    # 创建TestBaidu类,继承unittest.TestCase;实现定位搜索,验证搜索,定位打开新页面
    class TestBaidu(unittest.TestCase):
        # 用例执行前准备工作
        def setUp(self):
            self.driver = webdriver.Chrome()
            self.driver.implicitly_wait(6)
            self.driver.get("https://www.baidu.com")
    
        # 在TestBaidu类下构造test_baidu()方法
        def test_baidu(self):
            driver = self.driver
            driver.find_element_by_id("kw").clear()
            driver.find_element_by_id("kw").send_keys("百度")
            driver.find_element_by_id("su").click() # 定位搜索
            sleep(3)
    
            # 设置断言,验证搜索结果当前页面对应的title内容
            title = driver.title
            self.assertEqual(title,"百度_百度搜索")
    
            # 定位打开百度网盘新页面
            driver.find_element_by_partial_link_text("百度网盘").click()
            sleep(5)
    
        # 用例执行后的处理操作
        def tearDown(self):
            self.driver.quit()
    
    # 调试TestBaidu测试类
    if __name__ == '__main__':
        unittest.main()
    

    执行结果:

    通过模块调用进行用例执行
    testrun.py

    # 执行测试用例
    import unittest
    
    test_dir = "./TestCase"
    discover = unittest.defaultTestLoader.discover(test_dir,pattern="test*.py")
    
    if __name__ == '__main__':
        runner = unittest.TextTestRunner()
        runner.run(discover)
    

    执行结果:



    二、测试报告生成

    自动化测试执行完成后,需要生成测试报告来查看测试结果,使用HTMLTestRunner模块可直接生成Html格式的报告。

    下载传送门:(适用于Python2.x)
    http://tungwaiyip.info/software/HTMLTestRunner.html

    适用于Python3.x的模块需要修改以上下载的部分代码:

    • 94行:引入的名称从import StringIO--->import io
    • 539行:self.outputBuffer = StringIO.StringIO()--->self.outputBuffer = io.StringIO()
    • 631行:print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)--->print (sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))
    • 642行;if not rmap.has_key(cls):--->if not cls in rmap:
    • 766行:uo = o.decode('latin-1')--->uo = o
    • 772行:ue = e.decode('latin-1')--->ue = e

    存放路径:
    将以上修改完成的HTMLTestRunner模块存放在Python3.x路径下Lib目录里面即可

    项目的目录结构

    • 在第一步编写Web测试用例的基础上,同一个项目文件Test_Baidu文件夹下新建一个TestReport文件夹,用来存放生成的测试报告
    • 然后再新建一个runtest_Report.py文件用来作为执行测试用例、把测试结果写入并生成测试报告的脚本

    runtest_Report.py

    import unittest
    from HTMLTestRunner import HTMLTestRunner
    import time
    
    # 定义测试用例的路径
    test_dir = "./TestCase"
    discover = unittest.defaultTestLoader.discover(test_dir,pattern="test*.py")
    
    if __name__ == '__main__':
        report_dir = "./TestReport" # 定义存放报告的路径
        now = time.strftime("%y-%m-%d %H_%M_%S")    # 对报告的时间命名格式化
        report_name = report_dir+'/'+now+"result.html"  # 报告文件的完整路径
    
        # 打开文件,在报告文件写入测试结果
        with open(report_name,'wb') as f:
            runner = HTMLTestRunner(stream=f,title="Test Report"+"_Baidu",description="TestCase Result")
            runner.run(discover)    # 执行测试用例
    
        f.close()   # 保存后关闭文件
    

    执行结果:

    执行脚本后生成的测试报告 测试报告打开的样式

    三、测试报告颜值优化

    下载传送门:https://github.com/easonhan007/HTMLTestRunner

    PS:对于Python3.x环境,下载后的文件BSTestRunner.py也需要作第二步测试报告生成中一样的修改,同样修改好的文件放置在Python安装路径的Lib目录下

    新建runtest_Report_BS.py

    import unittest
    from BSTestRunner import BSTestRunner
    import time
    
    # 定义测试用例的路径
    test_dir = "./TestCase"
    discover = unittest.defaultTestLoader.discover(test_dir,pattern="test*.py")
    
    if __name__ == '__main__':
        report_dir = "./TestReport" # 定义存放报告的路径
        now = time.strftime("%y-%m-%d %H_%M_%S")    # 对报告的时间命名格式化
        report_name = report_dir+'/'+now+"_result.html"  # 报告文件的完整路径
    
        # 打开文件,在报告文件写入测试结果
        with open(report_name,'wb') as f:
            runner = BSTestRunner(stream=f,title="Test Report"+"_Baidu",description="TestCase Result")
            runner.run(discover)    # 执行测试用例
    
        f.close()   # 保存后关闭文件
    

    执行结果:

    美颜后的测试报告

    相关文章

      网友评论

        本文标题:[SP_10] 单元测试(UnitTest)之Web测试应用实战

        本文链接:https://www.haomeiwen.com/subject/nnbipftx.html