• Python基础学习016__UnitTest


    # UnitTest是python自带的一个单元测试框架,不需要额外安装
    # 也是自动化脚本执行框架,使用UnitTest来管理,运行多个框架
    # 为什么使用:能够组织多个用例去执行.提供了丰富的断言方法,能够生成测试报告
    # 核心要素:
    # Testcase:测试用例:这个测试用例是UnitTest的组成部分,不是手工和自动化中所说的用例(Test Case)
    # 每一个TestCase都是一个代码文件,这这个文件中书写真正的代码
    # TestSuite:测试套件,用来管理,组装(打包)多个TestCase
    # TestRunner:测试执行:用来执行TestSuite
    # TestLoader:测试加载:对TestSuite功能的补充
    # Fixture:测试夹具:书写在TestCase中的,是一种代码结构,在每个方法执行前后都会执行的内容.
    # 可以将用例的前置后置条件放在这里
    
    
    1. # 学习UnitTest框架的TestCase书写
    2. # 1.导包
    3. import unittest
    4. # 2.自定义类继承UnitTest的TestCase类
    5. class TestcaseDemo1(unittest.TestCase): # 在定义类时继承UnitTest的TestCase类
    6. # 3.书写要求:测试方法必须以test_开头
    7. def test_method1(self):
    8. print('方法1')
    9. def test_method2(self):
    10. print('方法2')
    11. # 4.执行用例:
    12. # 将光标放在类名后面运行,执行类中的所欲方法.
    13. # 将光标放在方法名的后边运行,只执行当前的方法
    14. class TestcaseDemo2(unittest.TestCase):
    15. # 3.书写要求:测试方法必须以test_开头
    16. def test_method2_1(self):
    17. print('方法2-1')
    18. def test_method2_2(self):
    19. print('方法2-2')
    20. # 运行时找不到run unittest for的选项:之前这个文件在书写用例前以.py代码的形式运行过
    21. # 解决方案1:新建一个文件,将代码复制进去即可
    22. # 解决方法2:在pycharm中点击最上方一行(绿色的'运行','debug'按钮那一行,有的在三个点那里面,有的是文件名的一个下拉框,)
    23. # 中的edit选项(有的叫做edit,有的叫做edit configurations...),
    24. # 将运行异常的这个代码从Python这个分类里移除即可

    1. # 学习UnitTest框架的TestCase书写
    2. # 1.导包
    3. import unittest
    4. # 2.自定义类继承UnitTest的TestCase类
    5. class TestcaseDemo1_1(unittest.TestCase): # 在定义类时继承UnitTest的TestCase类
    6. # 3.书写要求:测试方法必须以test_开头
    7. def test_method1(self):
    8. print('方法1')
    9. def test_method2(self):
    10. print('方法2')
    11. # 4.执行用例:
    12. # 将光标放在类名后面运行,执行类中的所欲方法.
    13. # 将光标放在方法名的后边运行,只执行当前的方法
    14. # 运行时找不到run unittest for的选项:之前这个文件在书写用例前以.py代码的形式运行过
    15. # 解决方案1:新建一个文件,将代码复制进去即可
    16. # 解决方法2:在pycharm中点击最上方一行(绿色的'运行','debug'按钮那一行,有的在三个点那里面,有的是文件名的一个下拉框,)
    17. # 中的edit选项(有的叫做edit,有的叫做edit configurations...),
    18. # 将运行异常的这个代码从Python这个分类里移除即可

    1. # 学习UnitTest框架的TestCase书写
    2. # 1.导包
    3. import unittest
    4. # 2.自定义类继承UnitTest的TestCase类
    5. class TestcaseDemo1_2(unittest.TestCase): # 在定义类时继承UnitTest的TestCase类
    6. # 3.书写要求:测试方法必须以test_开头
    7. def test_method1(self):
    8. print('方法1')
    9. def test_method2(self):
    10. print('方法2')
    11. # 4.执行用例:
    12. # 将光标放在类名后面运行,执行类中的所欲方法.
    13. # 将光标放在方法名的后边运行,只执行当前的方法
    14. # 运行时找不到run unittest for的选项:之前这个文件在书写用例前以.py代码的形式运行过
    15. # 解决方案1:新建一个文件,将代码复制进去即可
    16. # 解决方法2:在pycharm中点击最上方一行(绿色的'运行','debug'按钮那一行,有的在三个点那里面,有的是文件名的一个下拉框,)
    17. # 中的edit选项(有的叫做edit,有的叫做edit configurations...),
    18. # 将运行异常的这个代码从Python这个分类里移除即可
    1. """
    2. 学习TestSuite和TestRunner
    3. """
    4. # 1.导包
    5. import unittest
    6. from TestCase.hpp_TestCase import TestcaseDemo1, TestcaseDemo2
    7. from TestCase.hpp_TestCase1 import TestcaseDemo1_1
    8. from TestCase.hpp_TestCase2 import TestcaseDemo1_2
    9. # 2.实例化套件对象
    10. suite = unittest.TestSuite()
    11. # 3.使用套件对象添加用例方法
    12. # 3.1suite.addTest(测试类名('方法名'),名称直接去复制,不要手写
    13. suite.addTest(TestcaseDemo1('test_method1'))
    14. suite.addTest(TestcaseDemo1_1('test_method1'))
    15. suite.addTest(TestcaseDemo2('test_method2_1'))
    16. # 3.2添加一个测试类中的所有方法:suite.addTest(unittest.makeSuite(测试类名))
    17. # makeSuite即将废弃,所以有横线提示
    18. suite.addTest(unittest.makeSuite(TestcaseDemo1_2))
    19. # 4.实例化运行对象
    20. runner = unittest.TextTestRunner() # 框架固定写法
    21. # 5.使用运行对象去执行套件对象:运行对象runner,调用run方法,参数是套件对象suite
    22. runner.run(suite)
    1. # 什么情况下用TestLoader:TestCase有很多,使用一行代码加载所有TestCase
    2. # 1.导包
    3. import unittest
    4. # 2.实例化测试加载对象,并添加用例,加载完成后得到的是suite对象
    5. # 在一个项目里,测试用例通常放在一个目录里unittest.TestLoader().discover(用例所在的路径(相对),用例代码文件名使用*通配符)
    6. # suite = unittest.TestLoader().discover('.', 'hpp_TestCase*')
    7. # 使用默认的加载对象并加载用例
    8. suite = unittest.defaultTestLoader.discover('TestCase', 'hpp_TestCase*')
    9. # 3.运行对象执行套件对象
    10. # runner = unittest.TextTestRunner()
    11. # runner.run(suite)
    12. unittest.TextTestRunner().run(suite)

    1. # 在某些特定情况下会自动执行的一种代码结构
    2. # 方法级别:用例代码执行前后都会调用的结构
    3. # 方法执行之前:def setup(self):在每个测试方法执行之前都会执行
    4. # 方法执行之后:def teardown(self):每个测试方法执行之后都会执行
    5. # --------------------------------------------------
    6. # 类级别:在每个测试类中所有方法执行前后都会自动调用,在整个类中只会执行一次
    7. # 类级别的Fixture方法,是一个类方法
    8. # 类中所有方法之前
    9. """
    10. @classmethod
    11. def setupClass(cls):
    12. pass
    13. """
    14. # 类中所有方法之后
    15. """
    16. @classmethod
    17. def teardownClass(cls):
    18. pass
    19. """
    20. # ------------------------------------------------------------------
    21. # 模块级别(了解):在每个代码文件执行前后执行的代码结构,写在类外边,直接定义函数即可
    22. # 代码文件之前:def setupModule()
    23. # 代码文件之后: def teardownModule()
    24. # ----------------------------------------------------------------
    25. # 方法级别和类级别的Fixture方法,不一定非要都前后都有,根据需求写就可以
    26. # ---------------------------------------------------------------
    27. import unittest
    28. class TestLogin(unittest.TestCase):
    29. @classmethod
    30. def setUpClass(cls):
    31. print("打开浏览器")
    32. @classmethod
    33. def tearDownClass(cls):
    34. print('关闭浏览器')
    35. def setUp(self):
    36. print("测试前输入网址")
    37. def tearDown(self):
    38. print("测试后关闭当前页")
    39. def test_1(self):
    40. print('测试数据1')
    41. def test_2(self):
    42. print('测试数据2')

  • 相关阅读:
    数据结构-二叉树-堆
    机器学习强基计划0-2:什么是机器学习?和AI有什么关系?
    JAVA多态
    Wireshark在Windows上安装后报错怎么办?
    huggingface使用bert
    2024年第一季度全球20起重大网络安全并购交易:生成式AI的兴起、网络攻击的增加和政府监管的强化推动并购活动增长
    Linux(CentOS-7)-全面详解(学习总结---从入门到深化)
    低照度图像数据集
    【Flutter】基础教程:从安装到发布
    Webpack 5 新特性
  • 原文地址:https://blog.csdn.net/Chrisliuluo/article/details/134271984