今天总结下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. 好用的代码统计小工具SourceCounter(下载)

    SourceCounter下载链接 https://pan.baidu.com/s/12Cg51L0hRn5w-m1NQJ-Xlg 提取码:i1cd 很多时候我们需要统计自己所写的代码的数量.举个栗子 ...

  2. 展示出版社:写上URL地址对应函数、函数当中查询出所有的出版社、对象交给模板、循环对象拿出每条数据展示

    URL: from django.conf.urls import urlfrom django.contrib import adminfrom app01 import views urlpatt ...

  3. go 创建切片

    package main import "fmt" func main() { //自动推导类型,同时进行初始化 s1 := [],,,} fmt.Println("s1 ...

  4. vbs与其他语言进行交互编程(外存传参)

    vbs没有自定义排序函数.无需自己造轮子,可以用其他语言来完成这个任务(在传递数据比较简单的情况下,例如只传递数组). 首先用5分钟写一个C++排序的代码.命名为“mysort.cpp”: #incl ...

  5. Serializers 序列化组件——ModelSerializer详解

    前面学习Serializers用法时,发现所有的序列化都与我们的模型紧密相关. django_restframework也给我提供了跟模型紧密相关的序列化器——ModelSerializer. 它会根 ...

  6. 第02组 Beta冲刺(5/5)

    队名:無駄無駄 组长博客 作业博客 组员情况 张越洋 过去两天完成了哪些任务 验收了小程序的主要功能 制作Beta展示所需要用到的视频 制作Beta展示PPT 准备Beta答辩 提交记录(全组共用) ...

  7. 如何编写一个 SendFile 服务器

    如何编写一个 SendFile 服务器 前言 之前讨论零拷贝的时候,我们知道,两台机器之间传输文件,最快的方式就是 send file,众所周知,在 Java 中,该技术对应的则是 FileChann ...

  8. Python 将numpy array由浮点型转换为整型

    Python 将numpy array由浮点型转换为整型 ——使用numpy中的astype()方法可以实现,如:

  9. POJ-1129 DFS染色+四色原理的应用

    OJ-ID:     POJ-1129 author:    Caution_X date of submission:    20190927 tags:    DFS+四色原理的应用 descri ...

  10. win10每次开机都会自检系统盘(非硬件故障)——解决方案2019.07.12

    1.最近反复遇到了这个问题,之前遇到这个问题就把系统重装了,没想到今天又遇到了,目前系统东西太多了,重装太麻烦了,就下决心解决一下. 2.不要使用网络上流传的修改注册表的方案,把注册表的那个键值删除那 ...