1、pytest安装
pip install -U pytest
2、查看安装版本
pip show pytest
3、运行用例
pytest运行规则:查找当前目录及其子目录下以test_*.py或*_test.py文件,找到文件后,在文件中找到以test开头函数并执行。
例子:
运行步骤:
(1)打开cmd窗口
(2)进入到项目文件夹
(3)输入运行命令
pytest 文件名
成功显示 “.”, 失败显示 “F”
使用-v ,显示测试的详细信息
<1> 运行指定函数名,通过::标记
<2> 使用模糊匹配运行某个用例,使用-k 选项标识
<3> 标记函数后,指定函数运行
4、pytest 用例规则
(1)测试文件以test_开头(以_test结尾也可以)
(2)测试类以Test开头,并且不能带有 __init__ 方法
(3)测试函数以test_开头
(4)断言使用assert
5、跳过测试
希望运行时跳过某用例,需要在该用例上标记为skip
可以看出test_func2在执行时被跳过,用s标识
6、预知错误
事先知道测试的函数会执行失败,但是又不想直接跳过,而是希望显示提示。
使用x标识预知的失败
7、参数化
可以看出执行了三次
8、预处理和后处理
使用 -s 表示阻止信息被吞噬
未使用-s :
运行时添加了-s,可以看到测试成功的 . 标识前后有数据库的连接和关闭操作。
9、fixture 的作用域 (默认作用域为function)
Fixture 的作用是为了抽离重复的工作和方便复用,为了更精细化控制fixture,pytest 使用作用域来指定fixture的使用范围。
在定义fixture 时,使用scope参数声明作用域,可选项有:
(1)function :函数级,每个测试函数都会执行一次;
(2)class:类级别,每个测试类执行一次,所以方法都可以使用;
(3)module:模块级,每个模块执行一次,模块内函数和方法都可以使用;
(4)session:会话级,一次测试只执行一次,所有被找到的函数和方法都可用。
class 的使用
pytest.mark.usefixtures 对函数和方法也适用
10、fixture 重命名
Fixture 的名称默认为定义时的函数名,如果不想使用默认,可以通过name选项指定名称:
11、fixture 参数化
适用场景:一批API 需要测试不同数据库的支持情况(对所有数据库进行相同的操作)