超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

1、fixture的autouse参数

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

Pytest自动化测试框架:https://www.bilibili.com/video/BV18K411m7FH/

但是它有一个参数叫做autouse,默认是False。
关闭fixture的自动调用/自动执行功能。
如果设置autouse=True,则表示这个fixture在它的作用域范围内都会自动化执行。

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

第1种情况:当定义的fixture在测试类内部时
如果fixture设置了autouse=True,只会在测试类类内部生效。测试类以外的用例不受影响。

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

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

超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)_第1张图片

第2种情况,在conftest.py当中的fixture设置autouse=True
conftest.py能影响到所有测试类/测试用例都会执行(依据fixture的作用域决定在哪个范围内执行)。

有如下的目录结构:

超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)_第2张图片

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

超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)_第3张图片

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

超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)_第4张图片

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

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

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

超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)_第5张图片

基于以上情况,一般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:

超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)_第6张图片

执行结果如下:

超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)_第7张图片

module级别的fixture

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

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

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

超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)_第8张图片

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

超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)_第9张图片

执行结果如下:

超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)_第10张图片

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)_第11张图片

二、接口自动化项目实战

超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)_第12张图片

三、Web自动化项目实战

超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)_第13张图片

四、App自动化项目实战

超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)_第14张图片

五、一线大厂简历

超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)_第15张图片

六、测试开发DevOps体系

超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)_第16张图片

七、常用自动化测试工具

超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)_第17张图片

八、JMeter性能测试

超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)_第18张图片

九、总结(尾部小惊喜)

不要让过去的失败束缚你前行的步伐,珍惜当下,追求卓越,坚定信念,勇往直前,你将会创造美好的明天,成就光辉人生!

只有不断突破自我,挑战极限,才能创造出真正的价值。勇于接受挑战,坚定信心,迎难而上,你将成为最优秀的自己,实现人生的辉煌!

成功的路上充满着艰辛和挫折,但只要心怀热忱,脚踏实地,坚持不懈,你一定能够战胜困难,迎接属于自己的辉煌人生!

你可能感兴趣的:(pytest,自动化测试,软件测试,pytest,软件测试,自动化测试,python自动化测试,pytest自动化测试框架)