---相同点: 测试框架:经过python代码来编写用例、搜集用例、运行用例、生成报告---编写用例: unittest:继承TestCase unittest.testcase pytest:函数/类里面的方法,用例名称必须以test_开头,若是用例在类中,类名必须以Test开头---前置后置: unittest:setup/teardown setupClass,tearDownClass setup:当中获得的变量,如何从传递给测试用例 self.xxx setupClass:cls.xxx pytest: 方案一:沿用unittest的风格 一、用例级别:setup teardown 类和类外部的用例均可以使用 二、类级别:setup_class teardown_class @classmethod def setup_class(self): print("类前置-01") @classmethod def teardown_class(self): print("类后置01") 三、模块级别: setup_module teardown_module 方案二:fixture 先定义再调用 定义:@pytest.fixture() def init() 调用:@pytest.mark.usefixtures("init") 一、函数实现的,函数名称不固定---如何知道它是前置/后置 @pytest.fixture def fix(): pass 二、前置和后置操做,写在一个函数里面 ---如何区分哪些是前置代码 哪些是后置代码 @pytest.fixture def fix(): 前置代码 yeild #分隔线 后置代码 三、4个做用域 测试函数(function)、测试类(class)、测试模块文件(module)、测试会话(session) @pytest.fixture(scope=function/class/module/session) def fix(): 前置代码 yield #分隔线 后置代码 四、不须要跟测试类/测试函数放在一块儿,须要时再调用 五、前置操做获得的一些数据,如何传递给测试用例 yield 返回值 在测试用例当中,以fixture函数名做为用例参数,用例参数接收返回值 def init(): print("做用于为测试函数的======前置======代码") a = [1,2,3,4,5,6] yield a class TestDay: def test_new01(self,init): print("===类下的用例1===") for i in init: print(i) 测试函数的参数有两种:fixture 参数化-case 若是fixture有返回值,那么将它做为测试函数的参数时,则能够不用使用:@pytest.mark.usefixtures("init") 程序会自动找 六、共享机制:conftest.py conftest.py:定义fixture,能够定义多个 共享的范围:当前conftest.py所在目录下(包括子孙目录)的全部测试用例共享 若是须要在test01基础上增长内容,变成test02。须要在test02上引用test01---伪继承 @pytest.fixture() def fix01(): pass @pytest.fixture() def fix02(fix01): 新增的代码 yield fix01 执行顺序:fix01前置 fix02前置 fix02后置 fix01后置 嵌套的前提:fix01 与fix02 要么同级,要么fix01>fix02---断言 unittest:self.assert pytest:assert 表达式,根据表达式的结果判断经过/失败---收集用例 用例分散在多个文件中 unittest:TestLoad.discover(目录)---收集到套件中,run方法执行 pytest:不须要写代码去搜集用例,自动收集-查找用例的方式。执行用例时会自动收集 pytest命令行:pytest[参数] 如何自动收集用例: 一、目录--从哪一个目录下开始搜索用例: rootdir:在哪一个路径下运行,则pytest自动在当前路径下进行查找-rootdir 二、文件名--命名符合test_*.py或者*_test.py条件的文件名 三、函数/类下方法:-函数名以test_开头 -以Test开头(不含__init__)的类下的test_开头方法 搜集并运行用例 方式一:pytest -s -v 控制台显示详细用例执行状况 方式二:python文件中-pytest.main()---执行顺序 一、文件名:ASCALL码顺序从上到下 二、文件内部:按照代码前后顺序-即从上到下执行---测试报告 unittest:HTMLTestRunner BeautifulReport pyteest:allure