今天总结下pytest,pytest简直就是python自动化中的高富帅,各种操作,哈哈

这次总结主要涉及到了以下几点:

1、unittest中的setUp、tearDown、setUpClass、tearDownClass

2、pytest中的前置后置如何表达

3、如何将前置后置和用例关联

4、pytest中的前置后置的级别如何区分

5、pytest中的前置后置“继承”关系,如何继承

简单总结下pytest的前置后置吧,pytest的前置后置非常简单,但是不同于unittest的前置后置,首先回顾下

1、unittest中的setUp、tearDown、setUpClass、tearDownClass

  在unittest中的前置后置有明确的格式,看如下代码

import unittest

class MyTestCase(unittest.TestCase):

    def setUp(self):
print("我是set_up") def tearDown(self):
print("我是teardown") def test_1(self):
print("我是测试用例1") def test_ha(self):
print("我说测试用例2") if __name__ == '__main__':
unittest.main()

可以得出结论,以下是运行结果:

unittest的前置必须是放在setUp里面,后置必须是放在tearDown里面,这个是有明确的格式的

当然了,setUp、tearDown是用例级别的,unittest还有类界别 的,请看如下代码

import unittest

class MyTestCase(unittest.TestCase):

    @classmethod
def setUpClass(cls):
print("我是setupclass") @classmethod
def tearDownClass(cls):
print("我是teardownclass") def test_1(self):
print("我是测试用例1") def test_ha(self):
print("我说测试用例2") if __name__ == '__main__':
unittest.main()

结果如下:

可以看出setUpClass和tearDownClass都是在这个测试类只运行一次的

说了这么多,还是言归正传,说下pytest的前置后置

2、pytest中的前置后置如何表达

  pytest的前置后置只用一个函数就可以解决

import pytest

@pytest.fixture
def iniy():
print("我是前置")
yield
print("我是后置") @pytest.mark.usefixtures("iniy")
class TestCase: def test_1(self):
print("我是测试用例1") def test_ha(self):
print("我说测试用例2") if __name__ == '__main__':
pytest.main(["test.py"])

上面代码中的iniy函数就是一个前置后置,只需要加上一个装饰器(pytes.fixture)即可,

3、如何将用例与前置后置关联

  设置了前置后置之后,用例如何引用?

 @pytest.mark.usefixtures("init_driver")
def test_name_null_login(self, init_driver):
"""
用户名为空 """
init_driver[1].login(test_login_datas.login_name_null_data["name"], test_login_datas.login_name_null_data["passwd"])
assert(init_driver[1].error() == test_login_datas.login_name_null_data["expect"])

上面代码中标记的部分就是引用前置后置的方式,置于为什么用例需要传递参数?

r

4、pytest中的前置后置的级别如何区分

  查看源码可以看出这个fixture函数存在scope这个参数,这个参数是确定这个前置后置的级别,pytest中前置后置的界别分为函数级别、类级别、模块级别、会话级别,当然我们常用的还是类级别和函数级别

5、pytest中的前置后置“继承”关系,如何继承

  pytest中的前置后置还可以共用,类似于类的“继承”,当然这个也是需要固定的用法

如果要实现公用的前置后置,那么需要将这个前置后置放到指定的文件中去------conftest.py

当然这个继承关系也是有要求的:低级别可以继承高级别,高级别不能继承低级别

  举个栗子:函数级别的可以继承函数级别及更高的级别,但是类级别不能继承函数级别

# -*- coding:utf-8 -*-
"""
File Name: conftest
"""
import pytest @pytest.fixture(scope="class")
def ini():
print("我是类前置")
yield 2
print("我是类后置") @pytest.fixture
def init(ini):
pass

以上脚本可以看出init这个前置后置继承了ini这个类级别的前置后置,那么我们在下面脚本中直接调用这个init前置后置看看结果如何

import pytest

@pytest.fixture()
def iniy():
print("我是前置")
yield
print("我是后置") @pytest.mark.usefixtures("init")
class TestCase: def test_1(self):
print("我是测试用例1") def test_ha(self):
print("我说测试用例2") if __name__ == '__main__':
pytest.main(["test.py"])

pytest_前置后置的更多相关文章

  1. spring 切面 前置后置通知 环绕通知demo

    环绕通知: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:// ...

  2. AOP 环绕通知 集成了前置 后置 返回通知等功能

    AOP 环绕通知 集成了前置 后置 返回通知等功能

  3. Spring Bean前置后置处理器的使用

    Spirng中BeanPostProcessor和InstantiationAwareBeanPostProcessorAdapter两个接口都可以实现对bean前置后置处理的效果,那这次先讲解一下B ...

  4. unittest的前置后置,pytest的fixture和共享机制conftest.py

    Unittest setUp/tearDown setUp当中得到的变量,用self.xxx = value传递给测试用例 setUpClass/tearDownClass setupClass当中得 ...

  5. C: printf参数执行顺序与前置后置自增自减的影响

    起源: 今天在了解副作用side-effect的过程中,看到了下面的网页,把我带到了由printf引起的一系列问题,纠结了一整天,勉强弄懂. 第一个代码没什么好解释的.而第二个printf(" ...

  6. Spring -- aop(面向切面编程),前置&后置&环绕&抛异常通知,引入通知,自动代理

    1.概要 aop:面向方面编程.不改变源代码,还为类增加新的功能.(代理) 切面:实现的交叉功能. 通知:切面的实际实现(通知要做什么,怎么做). 连接点:应用程序执行过程期间,可以插入切面的地点. ...

  7. android实现前置后置摄像头相互切换

    首先自定义一个继承自SurfaceView并且实现了SurfaceHolder.Callback接口的组件: public class CameraView extends SurfaceView i ...

  8. thinkphp5使用前置后置操作

    下面举个例子,前置删除的例子   模型事件只可以在调用模型的方法才能生效,使用查询构造器通过Db类操作是无效的   控制器中实例化类   $cate=model('cate'); $cate-> ...

  9. vue路由导航守卫及前置后置钩子函数参数详解

    首先构建一个测试demo如下图: 接着来探讨路由配置界面 import Vue from 'vue' import Router from 'vue-router' // import HelloWo ...

随机推荐

  1. show()和隐藏hide() slideDown()和 slideUp() fadeIn()和fadeOut()

    1==>显示show()和隐藏hide() 是一组动画 与切换toggle()$("div").show():当不传递参数时,没有动画效果,它将某个元素瞬间显示出来 $(&q ...

  2. 毕业设计代做,各种系统微服务项目ssm项目,员工管理系统,微信小程序,购物商城,二手商城系统,销售系统,等等

    毕业设计代做,各种系统,微服务项目,ssm项目 小程序,商城等,期末作业等都可以,价格好说,长期接单, 有项目说明书,软件介绍相关文档,答辩的时候包过,知识点对接好,给你讲解等, 毕业设计代做,各种系 ...

  3. Spring Boot 自定义Filter

    一.Filter功能 它使用户可以改变一个 request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servle ...

  4. Python equivalent of D3.js

    http://brandonrose.org/       Python equivalent of D3.js Ask Question Asked 7 years, 1 month ago Act ...

  5. 期望DP的一般思路

    期望DP的一般思路 转载自_new2zy_ 期望\(dp\),也加概率\(dp\) 一般来说,期望\(dp\)找到正确的状态后,转移是比较容易想到的. 但一般情况下,状态一定是"可数&quo ...

  6. gitbook 入门教程之解决windows热加载失败问题

    破镜如何贴花黄 gitbook 在 Windows 系统无法热加载,总是报错! gitbook 是一款文档编写利器,可以方便地 markdown 输出成美观优雅的 html ,gitbook serv ...

  7. 使用python做一个爬虫GUI程序

    整体思路和之前的一篇博客爬虫豆瓣美女一致,这次加入了图片分类,同时利用tkinter模块做成GUI程序 效果如下: 整体代码如下: # -*- coding:utf-8 -*- import requ ...

  8. 【BZOJ3171】[TJOI2013] 循环格(网络流)

    点此看题面 大致题意: 给你一个循环格,每个格子有一个方向.问你至少修改多少格子,才能使从每个格子出发都能回到原格子. 建图 这是道网络流题目,主要就是考虑如何建图. 我们可以把每个点拆成两个点,一个 ...

  9. 10.7 csp-s模拟测试63 Median+Game+Park

    我堕落了 我觉得任牛逼的问题也是我的问题 T1 Median T2 Game T3 Park

  10. H5开发 连接蓝牙打印机 打印标签(斑马ZR628)

    1.连接蓝牙打印机(先用手机自带蓝牙进行配对),然后绑定出已配对的蓝牙设备(用来选择/切换打印机之用),代码如下 已配对蓝牙设备,中显示的就是已连接的,点击一下即可 代码: <!DOCTYPE ...