pytest自定义测试固件_byseyOrd
Posted seyord
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytest自定义测试固件_byseyOrd相关的知识,希望对你有一定的参考价值。
前言
固件Fixture是一些函数,pytest 会在执行测试函数之前(或之后)加载运行它们。主要是为一些单独测试用例需要预先设置与清理的情况下使用的。不同于setup和teardown,测试固件是自定义函数,能指定某些用例运行此固件的自定义函数
例子
@pytest.fixture() def text(): print("开始执行") #使用pytest.fixture()装饰一个函数成为fixture def test_one(): print("执行第一个用例") def test_two(text): #用例传入fixture函数名,以此来确认执行 print("执行第二个用例")
第一个参数不会运行先运行固件的自定义函数
固件函数使用yield定义用例运行之后运行的代码
@pytest.fixture() def text(): print("开始执行") yield #yield 之后的代码属于后处理,将在测试完成后执行 print("执行完毕") def test_one(): print("执行第一个用例") def test_two(text): print("执行第二个用例")
使用文件 conftest.py 集中管理固件
import pytest @pytest.fixture(scope="session") def start(): print(" 打开首页")
python会自动加载当前模块的conftest.py文件里的自定义测试固件,一般可以在根目录里定义更通用的自定义测试固件
注意注意conftest.py文件名是系统规定的名字
scope 作用域参数
- function: 函数级,每个测试函数都会执行一次固件;
- class: 类级别,每个测试类执行一次,所有方法都可以使用;
- module: 模块级,每个模块执行一次,模块内函数和方法都可使用;
- session: 会话级,一次测试只执行一次,所有被找到的函数和方法都可用。
自定义测试固件的自动化与参数化
自定义测试固件可以使用autouse参数实现自动化,而不用传入函数。可以使用params实现参数化
./conftest.py @pytest.fixture(scope="module",params=[‘test1‘,‘test2‘],autouse=True) def text(request): print("开始执行") yield request.param print("执行完毕") ./test_sample.py def test_one(): #此用例也会运行 print("执行第一个用例") print(text) def test_two(text): print("执行第二个用例")
以上是关于pytest自定义测试固件_byseyOrd的主要内容,如果未能解决你的问题,请参考以下文章
pytest的setup与teardown_byseyOrd
pytest接口自动化测试框架 | 自定义@pytest.mark.skip()标签