Pytest框架之fixture详解(二)

 更新时间:2022年06月30日 10:19:25   作者:小旭2021  
本文详细讲解了Pytest框架之fixture,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

相关文章

Pytest框架之fixture详解(一)

Pytest框架之fixture详解(二)

Pytest框架之fixture详解(三)

本文关于 fixture 的内容如下:

  • fixture 的 autouse 参数
  • session 和 module 级别的 fixture

1、fixture 的 autouse 参数

pytest 当中的 fixture, 默认情况下在定义好之后,需要测试用例/测试类主动请求使用,才会执行。

但是它有一个参数叫做 autouse,默认是 False。

关闭 fixture 的自动调用/自动执行功能。

如果设置 autouse=True,则表示这个 fixture 在它的作用域范围内都会自动化执行。

分为 2 种情况,接下来举例说明。

第 1 种情况:当定义的 fixture 在测试类内部时

如果 fixture 设置了 autouse=True,只会在测试类类内部生效。测试类以外的用例不受影响。

定义一个 test_pytest-autouse.py,定义一个 TestDemo 类。

在其中定义 2 个 fixture,一个设置了 autouse=True,另外一个使用默认值 False

执行结果:

第 2 种情况,在 conftest.py 当中的 fixture 设置 autouse=True

conftest.py 能影响到所有测试类/测试用例都会执行(依据 fixture 的作用域决定在哪个范围内执行)。

有如下的目录结构:

测试用例文件(test_autouse1.py,test_autouse2.py)当中,并没有使用@pytest.mark.usefixture("func_fix")来主动请求 fixture.

conftest.py 文件中的内容如下:

名为 func_fix 的 fixture 设置了 autouse=True,它的作用域为 function, 那么

在 pytest20210301 包下的每一个测试用例,在执行用例之前都会执行它的前置准备动作,在执行用例之后都会执行它的后置清理动作。

执行 main.py(收集用例并执行)文件的结果如下:

基于以上情况,一般 function、class、module 级别的 fixture,都不会去开启 autouse=True

不同的测试用例/测试类,对于前置准备工作和后置清理工作的需求并不完全一样。

如果开启了 autouse=True, 那么不管测试用例/测试类是否需要,都会去执行。

让测试用例/测试类根据实际需求主动来请求使用 fixture 才是正确之道。

2、session 和 module 级别的 fixture

pytest 的 fixture 除了 function 和 class 以外,还有 session 和 module 级别。

session 级别的 fixture

这里的 session 是指测试会话。

它指的是:从 pytest 开始收集用例,到执行用例完成的整个过程,为一次会话。

比如收集到了 100 个测试用例要执行,那么 session 夹具夹的就是这 100 个用例。

比如收集到了 30 个测试用例要执行,那么 session 夹具夹的就是这 30 个用例。

由于它在所有用例执行的过程中,只执行一次。

如果定义了 session 级别的 fixture,那说明你就是需要执行它的。

所以它是可以设置 autouse=True 的。

我们在做自动化测试的时候,如果有些前置准备工作是为整个测试会话做的,那么可以定义 session 级别的,比如清理/创建一些文件等。

还是以上面的用例结构为例,在 conftest.py 当中添加 session 级别的 fixture,并设置为 autouse=True:

执行结果如下:

module 级别的 fixture

module 是指测试 py 文件,夹具夹的是整个 test_*.py 文件里的测试用例。

在 test_*.py 里,哪一行代码调用了 module 级别的 fixture,那么夹的就是那行代码之后的所有测试用例。

举例来说明。还是以上面的用例结构为例,在 conftest.py 当中添加 module 级别的 fixture:

在 test_autouse2.py 当中,调用 module 级别的 fixture,但并未在第一个用例前调用。

执行结果如下:

到此这篇关于Pytest框架之fixture的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • selenium在执行phantomjs的API并获取执行结果的方法

    selenium在执行phantomjs的API并获取执行结果的方法

    今天小编就为大家分享一篇selenium在执行phantomjs的API并获取执行结果的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python实现FIFO缓存置换算法

    Python实现FIFO缓存置换算法

    这篇文章主要为大家详细介绍了Python实现FIFO(先进先出)缓存置换算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Python 分享10个PyCharm技巧

    Python 分享10个PyCharm技巧

    这篇文章主要介绍了Python 分享10个PyCharm技巧,今天要跟大家分享几个PyCharm小技巧,帮助大家提升工作效率!,需要的朋友可以参考下
    2019-07-07
  • Pytorch中的VGG实现修改最后一层FC

    Pytorch中的VGG实现修改最后一层FC

    今天小编就为大家分享一篇Pytorch中的VGG实现修改最后一层FC,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python标准库inspect的具体使用方法

    Python标准库inspect的具体使用方法

    本篇文章主要介绍了Python标准库inspect的具体使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • python爬虫使用正则爬取网站的实现

    python爬虫使用正则爬取网站的实现

    这篇文章主要介绍了python爬虫使用正则爬取网站的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • PyCharm 2021.2 (Professional)调试远程服务器程序的操作技巧

    PyCharm 2021.2 (Professional)调试远程服务器程序的操作技巧

    本文给大家分享用 PyCharm 2021 调试远程服务器程序的过程,通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-08-08
  • Linux下通过python获取本机ip方法示例

    Linux下通过python获取本机ip方法示例

    这篇文章主要给大家介绍了关于在Linux下通过python获取本机ip的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • Python爬虫中的并发编程详解

    Python爬虫中的并发编程详解

    Python爬虫中的并发编程是一种优化爬取速度、解决阻塞问题、优化资源利用的方式。常用的并发编程模块包括多线程、多进程、协程等,通过并发处理多个任务,可以提高爬取效率,节省爬虫资源利用成本。同时,还需注意线程安全、共享资源问题等并发编程中的常见陷阱
    2023-05-05
  • Python实现HTTP协议下的文件下载方法总结

    Python实现HTTP协议下的文件下载方法总结

    这篇文章主要介绍了Python实现HTTP协议下的文件下载方法总结,包括端点续传下载等功能,需要的朋友可以参考下
    2016-04-04

最新评论