pytest 可以用来做 系统测试 的自动化, 它的特点有
- 用 Python 编写测试用例,简便易用
- 可以用 文件系统目录层次 对应 手工测试用例 层次结构
- 灵活的 初始化清除 机制
- 可以灵活挑选测试用例执行
- 利用第三方插件,可以生成不错的报表
pytest 用例规则
- 测试文件以 test_ 开头(以 _test结尾 也可以)
- 测试类以 Test开头,并且不能带有
方法__init__
- 测试函数以 test_ 开头
- 断言使用 assert
- 所有的包pakege必须要有 __init__.py 文件
pytest运行规则:
项目目录下运行 pytest —> 寻找 当前目录及子目录下以 test_*.py 或 *_test.py 的文件 —> 寻找 Test开头的类 —> 寻找以 test开头函数 。
1、安装
虚拟环境安装, 按住 ctrl + alt + s 弹出如下界面,并按箭头指示选择,安装成功后会显示 installed successfully。

我们还需要产生测试报表,所以要安装一个第三方插件
pytest-html
,方法同上。
2、快速开始
1.新建一个test_sample.py文件,写以下代码:
# -*- coding:utf-8 -*-
# @Author: Sky
# @Email: [email protected]
# @Time: 2021/7/13 14:55
def func(x):
return x +1
def test_answer():
assert func(3) == 5
2.打开test_sample.py所在的目录(test_01),cmd窗口输入:pytest(或者输入py.test也可以)
3、pytest运行规则
项目目录下运行 pytest —> 寻找 当前目录及子目录下以 test_*.py 或 *_test.py 的文件 —> 寻找 Test开头的类 —> 寻找以 test开头函数 。
写个测试类
1、前面是写的一个test开头的测试函数,当用例有多个的时候,写函数就不太合适了。这时可以把多个测试用例,写到一个测试类里。
# test_class.py
class TestClass:
def test_one(self):
x = "this"
assert 'h' in x
def test_two(self):
x = "hello"
assert hasattr(x, 'check')
说明: hasattr(object, name)
判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False 。
需要注意的是name要用括号括起来 。
2、 如果只想运行其中一个 (test_*.py 和 *_test.py),可以指定传递文件名test_class.py ( 相对路径 或 绝对路径 )来运行模块 :
pytest -q .\test_sample.py