pytest相对unittest来说,有很多优点,比如pytest有大量的插件,用例失败可以定义重新执行几次....
前置:安装pytest;
使用pycharm打开settings,在project点击+搜索pytest后点击install即可
一、pytest的命名规则:
1、运行的.py文件必须已test开头或者结尾
2、class类必须以test开头或者结尾
3、def 后面函数必须以test开头或者结尾
二、运行
pytest框架运行有多种多样,
1、写好py文件后,在cmd命令行输入:pytest xxx.py
这种运行方式只提示运行pass或者fail,不过可以在后面添加参数
-s :显示在测试函数中的print函数输出
-v:显示每个测试函数结果
-q:只显示整体结果
2、
我常用的是以下的一种
在.py目录下创建有pytest.ini配置文件,内容如下:注意,开ini配置文件下最好不要有中文,不然可能会报:UnicodeDecodeError: 'gbk' codec can't decode byte 0xb0 in position 24: illegal multibyte sequence
addopts:后面加运行输出参数,如-s,-v,-q,还有一些插件的参数,如图中:
-s:表示输出测试函数中print输出
--html=./report.htm:在当前运行目录下生成assets文件夹和report.html测试报告,需要下载pytest-html插件,在settings/project里查找下载即可
-reruns 2 : 当测试函数运行失败后重新运行两次,需要下载pytest_rerunfailures插件,同上,也是在setting/project下载即可
运行:在Terminal里面输入pytest运行即可:
三、函数编写:
class 类名:
def 初始化函数:
def 测试函数:
初始化函数:用来初始化测试环境等等
setup------>teardown: 每个测试函数运行前后各运行一次:
setup_class------>teardown_class: 每个测试类运行前后各运行一次:
@pytest.fixture:修饰固定函数,通常用来完成前置操作,功能类似与setup、setup_class
参数:scope=?
class;每个类运行前运行
function:每个测试函数运行前运行
module:少用
session:少用
params:list类型,用来参数化
autouse=?
True:自动运行
False:默认false,不自动运行
例1:function
例子2:class
例子3:参数化params
参数化还有一种修饰方法:
@pytest.mark.parametrize(”参数函数“,list表)
list表里有多少个参数,修饰的函数就会运行多少次
多个参数:
四、断言
assert 判断式
在pytest里断言比较简单些,只判断真或假,没有unittest那么多