pytest-1:安装与基本使用
1,安装
cmd中执行命令
# 根据python的版本安装对应版本的pytest,以免出现不适配的版本错误.
# python3.6------>>pytest3.6.3
# python3.7------>>pytest4.0.2
pip install pytest # 下载最新版本
pip install pytest==3.6.0 # 指定安装版本
2.pytest的用例设计原则
>>>1.文件名以test_开头或者以_test结尾的py文件:如"test_*.py"、"*_test.py"
>>>2.以test_开头的函数
>>>3.以Test开头的类,
>>>4.以test_开头的方法
>>>5.所有的package包必须要有"__init__.py"文件
pytest用例规则:
1.测试文件以test_开头(以_test结尾)
2.测试类以Test开头,不能带有__init__方法
3.测试函数以test_开头
4.断言使用assert
3.参数简介
参考用例文件:
>>>-s:运行后可以看到print的打印信息
eg:
>>>-q:
eg:
>>>-v
eg:
>>> -k xxx 只运行xxx开头的用例(类、函数、方法);可以完全匹配,也可以模糊匹配
eg:
>>>不运行test_1.py文件下的test_3用例
>>>-x:遇到第一个失败的用例,则停止运行
>>>--maxfail=num:遇到num个失败的用例,则停止运行
>>>-h:查看可用的命令
>>>--last-failed:运行上次失败的用例
>>>通过节点方式运行用例
eg:
4.setup与teardown(系统自带,无法跨文件调用)
>>>整个py文件只运行一次
setup_module()、teardown_module()
>>>整个类只运行一次
setup_class()、teardown_class()
>>>整个函数只运行一次(不在类中)
setup_function()、teardown_function()
>>>整个方法只运行一次(在类中)
setup_method()、teardown_method()
>>>类中运行在调用方法前,兼容unitest
setup、teardown
5.fixture(自定义setup与teardown)
特点:可以跨文件进行调用
conftest.py文件的位置不同作用域也不同,作用于同级别的文件及以下级别的文件
作用级别:function(默认)、class、module、session
每个作用域的前后只会执行一次,作用域内的多个测试用例就不会重复去执行自定义的fixture方法
# 需要新增一个固定的文件名:"conftest.py"
# conftest.py
import pytest # 自定义装饰器,作用于每个函数 @pytest.fixture(scope="function") def login(): print("login")
print("这个相当于setup的作用")
yield
print("这个相当于teardown的作用,无法传参数")
# test_case.py # 调用之前自定义的作用于函数的装饰器 def test_1(login): print("先登录,再执行这条用例")