【Pytest03】全网最全最新的Pytest框架fixture应用篇(1)
fixtrue修饰器标记的方法通常用于在其他函数、模块、类或者整个工程调用时会优先执行,通常会被用于完成预置处理和重复操作。例如:登录,执行SQL等操作。
完整方法如下:fixture(scope='function',params=None,autouse=False,ids=None,name=None)
参数说明:
1.scope参数:标记方法的作用域。有4个可选值:function(默认,函数)、class(类)、module(模块)、package/session(包)
(1)作用域为函数实例
import pytest @pytest.fixture(scope='function',autouse=True)
def login():
print('登录系统') def test_01():
print('测试用例一') class TestCase: def test_03(self):
print('测试用例三') def test04(self):
print('测试用例四') if __name__ == '__main__':
pytest.main(['-s','pytest-demo.py'])
注意:该模块中所有的函数在执行之前都会执行login函数。
(2)作用域为类实例一:
import pytest @pytest.fixture(scope='class',autouse=True)
def login():
print('登录系统') def test_01():
print('测试用例一') class TestCase1:
def test_03(self):
print('测试用例三')
def test04(self):
print('测试用例四') class TestCase2:
def test_05(self):
print('测试用例五')
def test06(self):
print('测试用例六') if __name__ == '__main__':
pytest.main(['-s','pytest-demo.py'])
注意:在TestCase1类和TestCase2类中,login方法都只会被执行一次。函数test_01也会执行一次。
(2) 作用域为类实例二:
import pytest @pytest.fixture()
def login():
print('登录系统') def test_01():
print('测试用例一') @pytest.mark.usefixtures('login')
class TestCase: def test_03(self):
print('测试用例三') def test04(self):
print('测试用例四') if __name__ == '__main__':
pytest.main(['-s','pytest-demo.py'])
注意:此方式函数不会被执行,但是被作用的类中的每个函数执行之前都会执行一次,在测试类前面添加:@pytest.mark.usefixtures('login') 其中login为函数名。
(3)作用域为module时表示整个模块中都只会执行一次。这里不在累述。
(4)作用域为package时表示整个包都只会执行一次。这里不在累述。
(5)在N个用例中指定某一个用例执行
import pytest @pytest.fixture()
def login():
print('登录系统') def test_01():
print('测试用例一') class TestCase1:
def test_03(self):
print('测试用例三')
def test04(self,login):
print('测试用例四') if __name__ == '__main__':
pytest.main(['-s','pytest-demo.py'])
注意:test04以参数的形式传入了执行的方法login,这样来指定只有test04方法在执行时才执行login方法。
特别注意:如果在login函数中加入reutrn 'success',在test04方法中加入print(login),那么print(login)打印的值就是返回的success.
如果你此文你也有同感,如果你觉得此文对你有帮助,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入:
软件测试技术群:695458161,群里发放的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。
作者:来自公众号:软测之家
出处:https://www.cnblogs.com/csmashang/p/12553981html
欢迎转载,但未经作者同意请保留此段声明,并在文章页面明显位置给出原文链接。
【Pytest03】全网最全最新的Pytest框架fixture应用篇(1)的更多相关文章
- 【Pytest04】全网最全最新的Pytest框架fixture应用篇(2)
一.Fixture参数之params参数可实现参数化:(可以为list和tuple,或者字典列表,字典元祖等) 实例如下: import pytest def read_yaml(): '] @pyt ...
- 【Pytest02】全网最全最新的Pytest框架快速进阶篇(pytest前置和后置以及忽略测试用例)
一.Pytest的前置和后置方法 1.Pytest可以集成unittest实现前置和后置 import unittest import pytest class TestCase(unittest.T ...
- 【Pytest01】全网最全最新的Pytest框架快速入门
一.Pytest简介pytest是一个非常成熟的全功能的Python测试框架,主要有一下几个特点:1.简单灵活,容易上手,支持参数化2.能够支持简单的单元测试和复杂的功能测试,还可以用来做seleni ...
- 【Pytest05】全网最全最新的Pytest框架之用例分组执行
一.Fixture用例分组运行常用于冒烟测试,分模块运行等 pytest.ini配置文件中增加分组参数markers来实现用例分组,如: markers = g1:组一 smoke:冒烟测试 pyte ...
- (zhuan) 深度学习全网最全学习资料汇总之模型介绍篇
This blog from : http://weibo.com/ttarticle/p/show?id=2309351000224077630868614681&u=5070353058& ...
- pytest框架: fixture之conftest.py
原文地址:https://blog.csdn.net/BearStarX/article/details/101000516 一.fixture优势1.fixture相对于setup和teardown ...
- pytest框架fixture的使用
fixture可以当做参数传入 定义fixture跟定义普通函数差不多,唯一区别就是在函数上加个装饰器@pytest.fixture(),fixture命名不要以test开头,跟用例区分开.fixtu ...
- 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装爬虫框架Scrapy(离线方式和在线方式)(图文详解)
不多说,直接上干货! 参考博客 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装OpenCV(离线方式和在线方式)(图文详解) 第一步:首先,提示升级下pip 第二步 ...
- 全网最全ASP.NET MVC 教程汇总
全网最全ASP.NET MVC 教程汇总 MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MV ...
随机推荐
- python爬虫之selenium+打码平台识别验证码
1.常用的打码平台:超级鹰.打码兔等 2.打码平台在识别图形验证码和点触验证码上比较好用 (1)12306点触验证码 from selenium import webdriver from selen ...
- AVCaptureInput和AVCaptureOutput子类介绍
AVCaptureInput AVCaptureDeviceInput:用于从AVCaptureDevice对象捕获数据. AVCaptureScreenInput:从macOS屏幕上录制的一种捕获输 ...
- 关于Java序列化的问题你真的会吗?
引言 在持久化数据对象的时候我们很少使用Java序列化,而是使用数据库等方式来实现.但是在我看来,Java 序列化是一个很重要的内容,序列化不仅可以保存对象到磁盘进行持久化,还可以通过网络传输.在平时 ...
- javascript的装饰者模式Decorator
刚开始看这段代码有点绕,现在回过头来看,so easy! Function.prototype.before = function(beforefn){ var _self = this; retur ...
- Java反射之成员方法的反射
上一篇介绍了Java反射之成员变量的反射,这次介绍成员方法的反射. [一]Method类 Method类中封装了所有java方法的属性,包括该方法是否私有,该方法的修饰符,返回值,参数,抛的错误等等. ...
- requests.exceptions.SSLError报错
requests.exceptions.SSLError: HTTPSConnectionPool(host='www.baidu.com', port=443): Max retries excee ...
- abp(net core)+easyui+efcore实现仓储管理系统——入库管理之四(四十)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
- vue-router需要注意的点
1.在编程式导航中,如果提供了path,params会被忽略:需要提供name,或手写完整的带有参数的path;以下写法可取: const userId = '123'; 1.this.$route ...
- 3.后台配置、环境变量、日志、异常处理、二次封装Response、路由组件
目录 环境变量 封装logger 封装项目异常处理 二次封装Response模块 路由组件配置 环境变量 dev.py # 环境变量操作:小luffyapiBASE_DIR与apps文件夹都要添加到环 ...
- 用纯Python实现循环神经网络RNN向前传播过程(吴恩达DeepLearning.ai作业)
Google TensorFlow程序员点赞的文章! 前言 目录: - 向量表示以及它的维度 - rnn cell - rnn 向前传播 重点关注: - 如何把数据向量化的,它们的维度是怎么来的 ...