当前位置: 首页 > news >正文

pytest 使用(二):前后置(固件,夹具)

Pytest框架实现一些前后置(固件,夹具)的处理,常用三种。

一、setup/teardown,setup_class/teardown_class

为什么需要这些功能?
比如:web自动化执行用例之前,请问需要打开浏览器吗?用例执行后需要关闭浏览器?

class TestMashang:#这个在所有的用例之前只执行一次def setup_class(self):print('在每个类执行前的初始化的工作:比如:创建日志对象,创建数据库的连接,创建接口的请求对象。')#在每个用例之前执行一次。def setup(self):print('\n在执行测试用例之前初始化的代码:打开浏览器,加载网页')def test_01_baili(self):print('\n测试百里')def test_02_xingyao(self):print('\n测试星瑶')def teardown(self):print('\n在执行测试用例之后的扫尾的代码:关闭浏览器')def teardown_class(self):print('在每个类执行后的扫尾的工作:比如:销毁日志对象,销毁数据库的连接,销毁接口的请求对象。')

注意:和Unittest不一样,全是小写。

二、使用@pytest.fixture()装饰器来实现部分用例的前后置。

装饰器
@pytest.fixture(scope=“”,params=“”,autouse=“”,ids=“”,name=“”)


(1)scope表示的是被@pytest.fixture标记的方法的作用域。function(默认),class,
module,package/session.
(2)params:参数化(支持,列表[],元祖(),字典列表[{},{},{}],字典元祖({},{},{})

import pytest@pytest.fixture(scope='function',params=['成龙','甄子丹','菜10'])
def my_fixture(request):print('前置')yieldprint('后置')return request.paramclass TestMashang1:def test_01_baili(self):print('\n测试百里')def test_02_xingyao(self,my_fixture):print('\n测试星瑶')print('‐‐‐‐‐‐‐‐‐‐‐‐‐‐'+str(my_fixture))

params=[‘成龙’,‘甄子丹’,‘菜10’] 这里params是参数名,有s。
request.param这里是属性名,是没有s的。

(3)autouse=True:自动使用,默认False
(4)ids:当使用params参数化时,给每一个值设置一个变量名。意义不大。
(5)name:给表示的是被@pytest.fixture标记的方法取一个别名。
当取了别名之后,那么原来的名称就用不了了。

三、通过conftest.py和@pytest.fixture()结合使用实现全局的前置应用

(比如:项目的全局登录,模块的全局处理)
1.conftest.py文件是单独存放的一个夹具配置文件,名称是不能更改。
2.用处可以在不同的py文件中使用同一个fixture函数。
3.原则上conftest.py需要和运行的用例放到统一层。并且不需要做任何的imprt导入的操
作。
总结:
setup/teardown,setup_class/teardown_class 它是作用于所有用例或者所有的类
@pytest.fixtrue() 它的作用是既可以部分也可以全部前后置。
conftest.py和@pytest.fixtrue()结合使用,作用于全局的前后置。

相关文章:

  • asp.net老年大学教务管理信息系统VS开发sqlserver数据库web结构c#编程
  • Web Woeker和Shared Worker的使用以及案例
  • 【牛客网】安全—加密和安全
  • CSS3盒模型
  • C语言实现 1.在一个二维数组中形成 n 阶矩阵,2.去掉靠边元素,生成新的 n-2 阶矩阵;3.求矩阵主对角线下元素之和:4.以方阵形式输出数组。
  • Linux编辑器-vim使用
  • Cross Site Scripting (XSS)
  • MongoDB——MongoDB删除系统自带的local数据库
  • 淘宝协议最新版
  • GZ035 5G组网与运维赛题第7套
  • ssh登录界面变成vim提示,进不去系统
  • 分类预测 | Matlab实现KOA-CNN-GRU-selfAttention多特征分类预测(自注意力机制)
  • 线程池--简单版本和复杂版本
  • 【网络协议】聊聊TCP如何做到可靠传输的
  • 【UE】从UI中拖拽生成物体
  • JS 中的深拷贝与浅拷贝
  • CSS居中完全指南——构建CSS居中决策树
  • es6(二):字符串的扩展
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • input的行数自动增减
  • java2019面试题北京
  • PAT A1120
  • React Native移动开发实战-3-实现页面间的数据传递
  • TCP拥塞控制
  • vue.js框架原理浅析
  • 从0实现一个tiny react(三)生命周期
  • 记一次用 NodeJs 实现模拟登录的思路
  • 入手阿里云新服务器的部署NODE
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • MPAndroidChart 教程:Y轴 YAxis
  • !$boo在php中什么意思,php前戏
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (3)nginx 配置(nginx.conf)
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (ZT)出版业改革:该死的死,该生的生
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)VC++中ondraw在什么时候调用的
  • (转)大型网站架构演变和知识体系
  • (转)关于多人操作数据的处理策略
  • .NET CORE 第一节 创建基本的 asp.net core
  • .NET Framework与.NET Framework SDK有什么不同?
  • .Net MVC4 上传大文件,并保存表单
  • .NET企业级应用架构设计系列之应用服务器
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • .考试倒计时43天!来提分啦!
  • /var/lib/dpkg/lock 锁定问题
  • ?php echo ?,?php echo Hello world!;?
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600
  • [ 网络基础篇 ] MAP 迈普交换机常用命令详解
  • []使用 Tortoise SVN 创建 Externals 外部引用目录
  • [145] 二叉树的后序遍历 js