一、Fixture夹具实现用例前后置
1.定义夹具
@pytest.fixture(scope="class", autouse=True, ids="dd", name="别名")
def execute_sql(self):
print("执行数据库的验证,查询数据库")
yield
print("关闭数据库")
scope参数代表夹具执行时作用的作用域:
- function:在每个方法(测试用例)前后执行一次
- class: 在每个类的前后执行一次
- module:在每个py文件前后执行一次
- package/session: 在每个package前后执行一次
autouse=True参数代表自动调用。
params参数用来传输数据(list, tuple,字典列表,字典元组),使用时需要在夹具里面通过request接收,然后通过request.param获取数据,然后在通过yield把数据返回到测试用例中。
2.调用夹具:
在用例里面直接使用函数调用
yield 和return,都可以返回值,并且返回的值可以再测试用例中获取
yield 有叫生成器,返回的值为一个对象,return返回的是一个值。
二、 Fixture 与 conftest.py的使用
- conftest.py 主要用于单独的存放fixture固件。
- 级别为package,sesion时,那么可以在多个包甚至多个py文件里面共享前后置。 举例:登录
- conftest.py 文件里面的fixture不需要导包可以直接使用。
- conftest.py文件,可以有多个。
作用:出现重复日志,初始化一次日志对象。规避日志重复。连接数据库。关闭数据库。
注意:多个前置出现时的优先级
conftest.py 的级别高于setup/teardown
依登录模块举例,所有的平台登陆都属于共用功能:
1. 在testcases目录下新建conftest.py文件。
import pytest
@pytest.fixture(scope="function")
def manage_login():
print("Hi,Dear,账号登录成功,进入管理平台进行电站维护!!")
yield
2. 在使用conftest内的固件时,不需要导包操作,只需要在测试用例的参数中添加定义的固件函数即可。
@pytest.mark.smoke
def test_api01login(self, manage_login):
print('账号密码验证通过')
@pytest.mark.smoke
def test_api02login(self, manage_login):
print("查询运营电站列表")
@pytest.mark.smoke
def test_api03login(self, manage_login):
print('查询本月充电趋势')
三、allure-pytest 生成测试报告
3.1 下载allure文件
- 官网下载allure文件:https://github.com/allure-framework/allure2/releases/tag/2.29.0
- 解压到非中文的目录。
- 将解压得到的文件bin目录 路径配置到系统变量中。
3.2 安装allure报告
pip install allure-pytest
验证版本:allure --version
无法查看到版本号时,可以重启pycharm
3.3 执行命令,生成报告
1.在reports目录下生成temps目录,并且在temps目录下生成临时的json格式的临时报告
在pytest.ini文件中配置生生成临时json文件的参数
addopts = -vs --alluredir=reports/temps --clean-alluredir -m smoke
2. 在运行测试用例的主函数中配置运行json文件
os.system("allure generate reports/temps -o reports/allures --clean")
3.执行完以上步骤后,查看目录结构和报告内容