首页 > 其他分享 >pytest中的fixture:利用yield实现测试结束后的清理工作

pytest中的fixture:利用yield实现测试结束后的清理工作

时间:2023-05-06 17:33:32浏览次数:32  
标签:函数 fixture yield pytest test scope 执行

1 setup与teardown

fixture总是在test函数之前执行,为test函数的运行提供必要的支持(包括数据、环境等),可以把这个过程视为用例执行前面的准备工作 即setup

test函数执行完后也有一些收尾工作要做,即teardown,比如前面我们在fixture中实现了一个数据库连接给到test函数,那么,test函数执行完后按照流程也需要关闭数据库连接,其他如文件IO 网络连接也是一样

有时想想,网络世界虽然是虚拟的,但是它的处理逻辑却来源于现实世界的经验。我们在家里做家务也要事前准备劳动工具,事后归类放好这些工具

2 在pytest的fixture中实现清理工作

conftest.py
image

test_fixture.py
image
test_fixture_2.py
image
执行
image

pytest会根据fixture中scope的定义情况,来执行yield后面的代码。这里又和scope选项值得作用范围联系起来了。 简单来说,yield之后的代码会在scope定义范围内的最后一个test函数执行完后再执行,当然,yield之前的代码就是如上一篇所说,会在scope定义范围内的第一个test函数运行前执行

在yield前后遇到异常

遇到异常,异常没有处理好的话,异常之后的代码时不会执行
image

执行
image
如上,我们看到代码都没有进入到test函数就中止了。
因为异常在yield语句之前,这里未捕获的异常一发生就中止了 yield那一行语句都没有执行,即test函数之前的准备工作 setup部分都未执行完毕,teardown部分更加不会执行

标签:函数,fixture,yield,pytest,test,scope,执行
From: https://www.cnblogs.com/MyRecords/p/17378094.html

相关文章

  • pytest之 为什么要做接口自动化
    行情:会接口自动化15-25k工具类实现接口自动化:增加2-3kPostman+newman+git+jenkinsJmeter+Ant+jenkins 一,既然有这些接口测试工具,为什么要做接口自动化?1.敏捷开发,接口一般数量很大,团队需要实现接口测试,多人协作写用例还需要“版本控制”2.功能太死板,有些接口完全无法实现......
  • Pytest
    Pytest命名:文件:以text_开头或者_text结尾类:Text开头方法/函数(类内方法,类外函数):text_开头测试包无要求测试类不可以添加_init_构造函数 Pytest在pycharm设置后,会自动识别命名正确的函数和方法 用例结构:用例名称用例步骤用例断言......
  • pytes中fixture的scope: 决定可以在什么范围内共享fixture
    1fixture的scope在@pytest.fixture(scope='xxx')中,scope的可选值有5个,以下是官网的描述2function级别的scope添加如下代码到pytest.ini,便于输出日志新建conftest.py文件,把fixture函数写入其中,便于后面fixture可以在多个py文件中的test函数中引用conftest.pypytest的fix......
  • pytest的fixture
    1什么是[email protected]_fruit():returnFruit("apple")如上,用@pytest.fixture装饰的函数就是fixture2fixture的作用我的理解是为test函数的运行提供数据、必要的环境支持等3fixture的定义与使用fixture直接用于test函数@pytest.fixturedefmysq......
  • Pytest统计用例的个数并将测试结果群通知
    背景完成了公司的接口自动化测试,现在需要将测试结果,包括总的用例数、成功用例数、失败用例数等通知到公司的teams群,并且可以查看allure报告代码需要在项目根目录下的conftest.py文件中编写,运行时会自动统计用例,代码如下defpytest_terminal_summary(terminalreporter,exits......
  • pytest常用断言
    如上官网所说,pytest使用python中的assert来比较实际值与预期值,实现断言功能1常用的断言方式assertxxxasserta==basserta!=basserta>basserta<bassertainbassertanotinbassertinstance(a,int)asserta>banda>c同时断言多个条件asserta>bo......
  • 入门3-Pytest测试用例运行方式(1)Main方法运行
    通过主函数main方式执行If__name__== ‘__main__’:  Pytest.main({“--vs”})一般run.py里用main()方法,里边可以加参数 ......
  • pytest的几种执行方式
    1pytestxxxx2python-mpytestxxxxpython-mpytest--html=./report/rep2.htmltest_env_pytest_ini.py这个与pytest几乎是相同的,官网是这样说的3pythonpytestxxx这与python-mxxx很像,对于pytest执行结果来说没有区别,python-mxx如上截图所说,它会将当前工作目录......
  • pytest命令行选项
    一、pytest有很多命令行选项如-v输出详细信息-q简要输出-s打印输出-k"xxx"在filename、classname、functionname来匹配xxx规则,pytest只运行符合匹配结果的部分-mxx寻找具有xxmark的test来运行或不运行-x遇到失败即停止-nnum使用数量为nun的进程并行运行测试......
  • Pytest自动化测试框架常用参数
    一、常用参数1.指定执行文件/用例不带参数,仅带文件名/文件相对路径/文件绝对路径测试文件::测试类:执行指定类测试文件::测试类::用例:执行指定用例2.短命令选项-v:输出详细信息-q:简化输出信息-k:根据关键字表达式执行-x:失败则退出执行-m别名:只执行被标记的用例、-s:输出......