# UnitTest是python自带的一个单元测试框架,不需要额外安装 # 也是自动化脚本执行框架,使用UnitTest来管理,运行多个框架 # 为什么使用:能够组织多个用例去执行.提供了丰富的断言方法,能够生成测试报告 # 核心要素: # Testcase:测试用例:这个测试用例是UnitTest的组成部分,不是手工和自动化中所说的用例(Test Case) # 每一个TestCase都是一个代码文件,这这个文件中书写真正的代码 # TestSuite:测试套件,用来管理,组装(打包)多个TestCase # TestRunner:测试执行:用来执行TestSuite # TestLoader:测试加载:对TestSuite功能的补充 # Fixture:测试夹具:书写在TestCase中的,是一种代码结构,在每个方法执行前后都会执行的内容. # 可以将用例的前置后置条件放在这里
- # 学习UnitTest框架的TestCase书写
- # 1.导包
- import unittest
-
-
- # 2.自定义类继承UnitTest的TestCase类
- class TestcaseDemo1(unittest.TestCase): # 在定义类时继承UnitTest的TestCase类
- # 3.书写要求:测试方法必须以test_开头
- def test_method1(self):
- print('方法1')
-
- def test_method2(self):
- print('方法2')
- # 4.执行用例:
- # 将光标放在类名后面运行,执行类中的所欲方法.
- # 将光标放在方法名的后边运行,只执行当前的方法
-
-
- class TestcaseDemo2(unittest.TestCase):
- # 3.书写要求:测试方法必须以test_开头
- def test_method2_1(self):
- print('方法2-1')
-
- def test_method2_2(self):
- print('方法2-2')
-
- # 运行时找不到run unittest for的选项:之前这个文件在书写用例前以.py代码的形式运行过
- # 解决方案1:新建一个文件,将代码复制进去即可
- # 解决方法2:在pycharm中点击最上方一行(绿色的'运行','debug'按钮那一行,有的在三个点那里面,有的是文件名的一个下拉框,)
- # 中的edit选项(有的叫做edit,有的叫做edit configurations...),
- # 将运行异常的这个代码从Python这个分类里移除即可
- # 学习UnitTest框架的TestCase书写
- # 1.导包
- import unittest
-
-
- # 2.自定义类继承UnitTest的TestCase类
- class TestcaseDemo1_1(unittest.TestCase): # 在定义类时继承UnitTest的TestCase类
- # 3.书写要求:测试方法必须以test_开头
- def test_method1(self):
- print('方法1')
-
- def test_method2(self):
- print('方法2')
- # 4.执行用例:
- # 将光标放在类名后面运行,执行类中的所欲方法.
- # 将光标放在方法名的后边运行,只执行当前的方法
-
-
- # 运行时找不到run unittest for的选项:之前这个文件在书写用例前以.py代码的形式运行过
- # 解决方案1:新建一个文件,将代码复制进去即可
- # 解决方法2:在pycharm中点击最上方一行(绿色的'运行','debug'按钮那一行,有的在三个点那里面,有的是文件名的一个下拉框,)
- # 中的edit选项(有的叫做edit,有的叫做edit configurations...),
- # 将运行异常的这个代码从Python这个分类里移除即可
-
-
-
- # 学习UnitTest框架的TestCase书写
- # 1.导包
- import unittest
-
-
- # 2.自定义类继承UnitTest的TestCase类
- class TestcaseDemo1_2(unittest.TestCase): # 在定义类时继承UnitTest的TestCase类
- # 3.书写要求:测试方法必须以test_开头
- def test_method1(self):
- print('方法1')
-
- def test_method2(self):
- print('方法2')
- # 4.执行用例:
- # 将光标放在类名后面运行,执行类中的所欲方法.
- # 将光标放在方法名的后边运行,只执行当前的方法
-
-
- # 运行时找不到run unittest for的选项:之前这个文件在书写用例前以.py代码的形式运行过
- # 解决方案1:新建一个文件,将代码复制进去即可
- # 解决方法2:在pycharm中点击最上方一行(绿色的'运行','debug'按钮那一行,有的在三个点那里面,有的是文件名的一个下拉框,)
- # 中的edit选项(有的叫做edit,有的叫做edit configurations...),
- # 将运行异常的这个代码从Python这个分类里移除即可
-
-
-
- """
- 学习TestSuite和TestRunner
- """
- # 1.导包
- import unittest
-
- from TestCase.hpp_TestCase import TestcaseDemo1, TestcaseDemo2
- from TestCase.hpp_TestCase1 import TestcaseDemo1_1
- from TestCase.hpp_TestCase2 import TestcaseDemo1_2
-
- # 2.实例化套件对象
- suite = unittest.TestSuite()
- # 3.使用套件对象添加用例方法
- # 3.1suite.addTest(测试类名('方法名'),名称直接去复制,不要手写
- suite.addTest(TestcaseDemo1('test_method1'))
- suite.addTest(TestcaseDemo1_1('test_method1'))
- suite.addTest(TestcaseDemo2('test_method2_1'))
- # 3.2添加一个测试类中的所有方法:suite.addTest(unittest.makeSuite(测试类名))
- # makeSuite即将废弃,所以有横线提示
- suite.addTest(unittest.makeSuite(TestcaseDemo1_2))
- # 4.实例化运行对象
- runner = unittest.TextTestRunner() # 框架固定写法
- # 5.使用运行对象去执行套件对象:运行对象runner,调用run方法,参数是套件对象suite
- runner.run(suite)
-
-
- # 什么情况下用TestLoader:TestCase有很多,使用一行代码加载所有TestCase
- # 1.导包
- import unittest
-
- # 2.实例化测试加载对象,并添加用例,加载完成后得到的是suite对象
- # 在一个项目里,测试用例通常放在一个目录里unittest.TestLoader().discover(用例所在的路径(相对),用例代码文件名使用*通配符)
- # suite = unittest.TestLoader().discover('.', 'hpp_TestCase*')
- # 使用默认的加载对象并加载用例
- suite = unittest.defaultTestLoader.discover('TestCase', 'hpp_TestCase*')
- # 3.运行对象执行套件对象
- # runner = unittest.TextTestRunner()
- # runner.run(suite)
- unittest.TextTestRunner().run(suite)
-
- # 在某些特定情况下会自动执行的一种代码结构
- # 方法级别:用例代码执行前后都会调用的结构
- # 方法执行之前:def setup(self):在每个测试方法执行之前都会执行
- # 方法执行之后:def teardown(self):每个测试方法执行之后都会执行
- # --------------------------------------------------
- # 类级别:在每个测试类中所有方法执行前后都会自动调用,在整个类中只会执行一次
- # 类级别的Fixture方法,是一个类方法
- # 类中所有方法之前
- """
- @classmethod
- def setupClass(cls):
- pass
- """
- # 类中所有方法之后
- """
- @classmethod
- def teardownClass(cls):
- pass
- """
- # ------------------------------------------------------------------
- # 模块级别(了解):在每个代码文件执行前后执行的代码结构,写在类外边,直接定义函数即可
- # 代码文件之前:def setupModule()
- # 代码文件之后: def teardownModule()
- # ----------------------------------------------------------------
- # 方法级别和类级别的Fixture方法,不一定非要都前后都有,根据需求写就可以
- # ---------------------------------------------------------------
- import unittest
-
-
- class TestLogin(unittest.TestCase):
- @classmethod
- def setUpClass(cls):
- print("打开浏览器")
-
- @classmethod
- def tearDownClass(cls):
- print('关闭浏览器')
-
- def setUp(self):
- print("测试前输入网址")
-
- def tearDown(self):
- print("测试后关闭当前页")
-
- def test_1(self):
- print('测试数据1')
-
- def test_2(self):
- print('测试数据2')