参考资料:http://www.python3.vip/tut/auto/pytest/01/
https://www.cnblogs.com/yoyoketang/p/9356693.html
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: 2780619724@qq.com # @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
备注: -q, --quiet decrease verbosity( 显示简单结果)