zoukankan      html  css  js  c++  java
  • UnitTest测试套件及运行器

    1.Skip装饰器与断言使用

      1.@unittest.skip():无理由跳过,强制跳过

      2.@unittest.skipUnless(1 == 2,"跳过"),条件为假时就跳过,条件为真就执行用例

      3.@unittest.skipIf(1 == 1,"if跳过"),条件为真就跳过,条件为假就不跳过

      4.@unittest.expectedFailure:当这条测试用例出现错误时,系统选择忽略错误

    几种skip装饰器示例:

    import unittest

    from selenium import webdriver


    class Test_demo(unittest.TestCase):

    def test_1(self):
    driver = webdriver.Chrome()
    driver.get('http://www.baidu.com')
    ti = driver.title
    print(ti)
    @unittest.skip("这条用例不执行,暂时跳过")
    @unittest.skipUnless(1 == 2,"跳过")
    @unittest.skipIf(1 == 1,"if跳过")
    @unittest.expectedFailure
    def test_2(self):
    print("run test2")

    def test_3(self):
    print("run test3")

    # @unittest.expectedFailure
    def test_4(self):
    print(3/0)

    if __name__ == '__main__':
    unittest.main()

     断言

        

    断言:
    通过self.assert引出
    常用的几种断言*****:
    self.assertEqual()
    self.assertTrue()
    self.assertIsNone()
    self.assertAlmostEqual():多用于浮点数。判断是否几乎相等(例如0.3154和0.3153)

    断言示例:
    class Test_demo(unittest.TestCase):

    def test_1(self):
    driver = webdriver.Chrome()
    driver.get('http://www.baidu.com')
    ti = driver.title
    print(ti)
    self.assertEqual(ti,'百度一下,你就知道',msg='断言失败')
    # self.assertNotEqual(ti,'百度一下,你就知道',msg='Not断言失败')

    if __name__ == '__main__':
    unittest.main()

    测试套件与运行器:

      

    测试套件和运行器是UnitTest框架特有的产物,主要用于管理测试用例的运行

    创建测试套件时,需要在UnitTest框架以外进行创建

    示例:   

    import os
    import unittest
    from unittest_skip import Test_demo
    from HTMLTestRunner import HTMLTestRunner
    #创建测试套件,其本质就是一个list集合
    suite = unittest.TestSuite()
    1.添加指定的测试用例
    suite.addTest(Test_demo('test_4'))#通过unitDemo直接添加test_case4这一个测试用例
    suite.addTest(Test_demo('test_3'))
    2.添加多条测试用例
    cases = [Test_demo('test_1'),Test_demo('test_2')]
    suite.addTests(cases)
    方法3
    3. 设置运行的条件,所有符合条件的py文件都会被执行,文件中的测试用例会依照原本的顺序运行
    test_dir = './'
    discover = unittest.defaultTestLoader.discover(start_dir=test_dir, pattern='unit*.py')
    4.运行指定的类对象中的测试用例
    suite.addTests(unittest.TestLoader().loadTestsFromTestCase(Test_demo))
    5.运行执行名称的类对象中的测试用例
    suite.addTests(unittest.TestLoader().loadTestsFromName('unittest_skip.Test_demo'))
    创建运行器,执行测试套件
    run = unittest.TextTestRunner()
    run.run(suite)

    HTMLTestRunner测试报告:

    1. py文件复制粘贴在Lib路径下,通过导包运行

    2. 其本质是测试报告运行器,与TextTestRunner差不多


    # 创建测试报告运行器
    report_name = '这是段誉写的测试报告'
    report_title = '这里是段誉标题'
    report_desc = '鸭梨你真的很过分,因为我才讲过'
    report_path = './report/'
    report_file = report_path + 'report2.html'
    # 判断report_path是否存在,如果不存在则新增一个该路径
    if not os.path.exists(report_path):
    os.mkdir(report_path)
    else:
    pass
    # 生成测试报告
    with open(report_file, 'wb') as report:
    # 添加测试用例
    suite.addTest(Test_demo('test_3')) # 通过UnitDemo直接添加test_3这一个测试用例
    suite.addTest(Test_demo('test_2'))
    suite.addTest(Test_demo('test_4'))
    # 套件通过TextTestRunner对象进行运行≈unittest.main()
    # 如果结合HTMLTestRunner使用,则需要调用HTMLTestRunner中的运行器
    htmlrunner = HTMLTestRunner(stream=report,title=report_title,description=report_desc)
    htmlrunner.run(suite)
    # 与TextTestRunner比较
    # ttrunner = unittest.TextTestRunner()
    # ttrunner.run(suite)
    report.close()

     

     

  • 相关阅读:
    经典的Android案例项目源码
    技术面试(项目经验)
    从零开始搭建架构实施Android项目
    Android 开源项目第五篇——优秀个人和团体篇
    DOM,SAX,JDOM,DOM4J 四种方式解析xml
    Android小项目:记事本
    图像的读取、缩小、保存
    android中获取图片、获取图片像素、处理像素等基础知识
    图像透明化
    Notification应用的复习
  • 原文地址:https://www.cnblogs.com/Murraya/p/12544045.html
Copyright © 2011-2022 走看看