一:pytest基于unittest之上的单元测试框架
1.自动发现测试模块和测试方法;
2.断言使用assert+表达式便可;
3.能够设置会话级、模块级、类级、函数级的fixtures :数据准备+清理工做
4.丰富的插件库 http://plugincompat.herokuapp.com/html
安装命令 pip install pytest
安装html报告的插件:pip install pytest-htmlweb
二:pytest收集测试用例的规则:
1.默认从当前目录中搜集测试用例,即在哪一个目录下运行pytest命令,就从哪一个目录中搜索;
2.搜索规则:
1)先找py文件。test_*.py或者*_test.py
2) 找模块下面,以test_开头的函数名称。
3)找模块下面,以Test开头的类(没有__init__函数)中,找以test_开头的函数。session
三:pytest 之 mark
对测试用例打标签。执行用例就能够根据标签过滤用例。
标记功能:测试类和测试用例前面 ,@pytest.mark.标签名app
四:pytest 之 定义fixture框架
@pytest.fixture(scope=)
def init_web():
#前置
yield 返回值
#后置函数
1. fixture : 即测试用例执行的环境准备和清理。
2. 在unittest中即指:setup(),teardown(),classSetup(),classTeardown()
3. fixture主要的目的是为了提供一种可靠的和可重复性的手段去运行那些最基本的测试内容。
4. 定义fixture:
(1)把一个函数定义为fixture很简单,在函数声明以前加上@pytest.fixture
(2)表示此函数为测试环境数据的准备和清理
(3)fixture内部如何区分环境准备、环境清理呢:
A. 在函数内使用yield关键字
B. yield关键字后的代码,就是环境清理的代码,即在测试用例执行完成以后会执行的代码单元测试
5. fixture的做用域:
(1)fixture的参数中,有scope做用域
(2)function:每一个test都运行,默认是function的scope。即unittest的Setup和tearDown
(3)class:每一个class的全部test只运行一次,即unittest的setupClass和teardownClass
(4)module:每一个module的全部test只运行一次
(5)session:每一个session只运行一次测试
6. fixture设置返回值:
yield 返回值插件
7. fixture的调用:
A. 在测试用例中直接调用:将fixtures的函数名称做为测试用例的参数,若是fixture有返回值,那么测试用例中的fixture函数名字就接收返回值
B. 用fixture装饰器调用fixture:在测试用例/测试类前面加上@pytest.mark.usefixtures('fixture函数名称')
C. 用autos调用fixture:定义fixture时,有一个参数是autouse,默认设置为false:当默认为false时,就能够选择A/B两种方式来调用fixture;
当设置为true时,在一个session内的全部test都会自动调用这个fixturehtm
五:pytest 之 参数化在测试用例的前面加上: @pytest.mark.parametrize("参数名",列表数据)参数名:用来接收每一项数据,并做为测试用例的参数列表数据:一组测试数据