PyTest支持xUnit style 结构, setup() 和 teardown() 方法用于初始化和清理测试环境,可以保证测试用例的独立性。pytest的setup/teardown方法包括:模块级别(setup_module/teardown_module)、函数级别(setup_function/teardown_function)、类级别(setup_class/ teardown_class)、方法级别(setup_method/teardown_methond或者setup/teardown)。

模块级别

模块中的第一个测试用例开始前执行setup_module方法,模块中的最后一个测试用例结束后运行teardown_module方法。

import pytest

def setup_module():
print("初始化。。。") def teardown_module():
print("清理。。。") class Test_Demo():
def test_case1(self):
print("开始执行测试用例1")
assert 1 + 1 == 2 def test_case2(self):
print("开始执行测试用例2")
assert 2 + 8 == 10 def test_case3(self):
print("开始执行测试用例3")
assert 99 + 1 == 100

结果:

模块初始化。。。
PASSED [ 33%]开始执行测试用例1
PASSED [ 66%]开始执行测试用例2
PASSED [100%]开始执行测试用例3
模块清理。。。

函数级别

setup_function/teardown_function在每个测试函数前后运行,只对函数用例生效,不在类中。

import pytest

def setup_function():
print("初始化。。。") def teardown_function():
print("清理。。。") def test_case1():
print("开始执行测试用例1")
assert 1 + 1 == 2 def test_case2():
print("开始执行测试用例2")
assert 2 + 8 == 10 def test_case3():
print("开始执行测试用例3")
assert 99 + 1 == 100

结果:

test_setup_teardown2.py::test_case1 初始化。。。
PASSED [ 33%]开始执行测试用例1
清理。。。 test_setup_teardown2.py::test_case2 初始化。。。
PASSED [ 66%]开始执行测试用例2
清理。。。 test_setup_teardown2.py::test_case3 初始化。。。
PASSED [100%]开始执行测试用例3
清理。。。

类级别

类级别函数 setup_class/teardown_class 对类有效,位于类中,在测试类中前后调用一次。

class Test_Demo():
def setup_class(self):
print("初始化。。。") def teardown_class(self):
print("清理。。。") def test_case1(self):
print("开始执行测试用例1")
assert 1 + 1 == 2 def test_case2(self):
print("开始执行测试用例2")
assert 2 + 8 == 10 def test_case3(self):
print("开始执行测试用例3")
assert 99 + 1 == 100

结果:

初始化。。。
PASSED [ 33%]开始执行测试用例1
PASSED [ 66%]开始执行测试用例2
PASSED [100%]开始执行测试用例3
清理。。。

方法级别

方法级别函数 setup_method/teardown_method和setup/teardown对类有效,也位于类中,这两个效果一样,在测试类中每个测试方法前后调用一次。

class Test_Demo():
def setup_method(self):
print("初始化。。。") def teardown_method(self):
print("清理。。。") def test_case1(self):
print("开始执行测试用例1")
assert 1 + 1 == 2 def test_case2(self):
print("开始执行测试用例2")
assert 2 + 8 == 10 def test_case3(self):
print("开始执行测试用例3")
assert 99 + 1 == 100

结果:

初始化。。。
PASSED [ 33%]开始执行测试用例1
清理。。。
初始化。。。
PASSED [ 66%]开始执行测试用例2
清理。。。
初始化。。。
PASSED [100%]开始执行测试用例3
清理。。。

--THE END--

文章标题:Pytest测试框架(二):pytest 的setup/teardown方法

本文作者:hiyo

本文链接:https://hiyong.gitee.io/posts/pytest-xunit-style-of-setup-teardown/

欢迎关注公众号:「测试开发小记」及时接收最新技术文章!

Pytest测试框架(二):pytest 的setup/teardown方法的更多相关文章

  1. 『德不孤』Pytest框架 — 1、Pytest测试框架介绍

    目录 1.什么是单元测试框架 2.单元测试框架主要做什么 3.单元测试框架和自动化测试框架有什么关系 4.Pytest测试框架说明 5.Pytest框架和Unittest框架区别 (1)Unittes ...

  2. Pytest 测试框架

    一 . Pytest 简介 Pytest是python的一种单元测试框架. 1. pytest 特点 入门简单,文档丰富 支持单元测试,功能测试 支持参数化,重复执行,部分执行,测试跳过 兼容其他测试 ...

  3. Pytest测试框架(三):pytest fixture 用法

    xUnit style 结构的 fixture用于初始化测试函数, pytest fixture是对传统的 xUnit 架构的setup/teardown功能的改进.pytest fixture为测试 ...

  4. 《带你装B,带你飞》pytest修仙之路3 - setup/teardown

    1. 简介 学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用例开始前和结束后都去执行一次.当然还有更高级一点的setupClass和teardownClass ...

  5. pytest测试框架 -- 简介

    一.pytest测试框架简介: (1)pytest是python的第三方测试框架,是基于unittest的扩展框架,比unittest更简洁,更高效. (2)pytest框架可以兼容unittest用 ...

  6. Pytest测试框架(五):pytest + allure生成测试报告

    Allure 是一款轻量级.支持多语言的开源自动化测试报告生成框架,由Java语言开发,可以集成到 Jenkins. pytest 测试框架支持Allure 报告生成. pytest也可以生成juni ...

  7. Pytest测试框架(一):pytest安装及用例执行

    PyTest是基于Python的开源测试框架,语法简单易用,有大量的插件,功能非常多.自动检测测试用例,支持参数化,跳过特定用例,失败重试等功能. 安装 pip install -U pytest  ...

  8. python pytest测试框架介绍二

    在介绍一中简单介绍了pytest的安装和简单使用,接下来我们就要实际了解pytest了 一.pytest的用例发现规则 pytest可以在不同的函数.包中发现用例,发现的规则如下 文件名以test_开 ...

  9. [翻译]pytest测试框架(二):使用

    此文已由作者吴琪惠授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 调用pytest 调用命令: python -m pytest [...] 上面的命令相当于在命令行直接调用 ...

随机推荐

  1. 【NOIP2015模拟11.4】JZOJ8月6日提高组T1 刷题计划

    [NOIP2015模拟11.4]JZOJ8月6日提高组T1 刷题计划 题目 题解 题意 有\(n\)道题,编号为1~\(n\) 给出\(m\)次操作 每次操作有3种类型 1 \(x\) 表示交了\(A ...

  2. vue+element ctrl+s保存写法

    <el-input type="textarea" ref="inppp" v-model="values" placeholder= ...

  3. PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

    注:网上搜来的快照,暂未验证 在java代码中请求https链接的时候,可能会报下面这个错误javax.net.ssl.SSLHandshakeException: sun.security.vali ...

  4. PyQt(Python+Qt)学习随笔:exit code 1073741845与槽函数所在对象不能定义同名实例方法问题

    最近做了几次测试,在PyQt中如果使用与槽函数同名的实例方法可能会导致不可控的错误. 案例1:如果两个信号映射到同名的槽函数,虽然参数不一样,但真正响应的槽函数是最后定义的槽函数,具体案例请见< ...

  5. WEB安全漏洞挖掘向入坑指北

    这个指北不会给出太多的网站和方向建议,因为博主相信读者能够从一个点从而了解全局,初期的时候就丢一大堆安全网址导航只会浇灭人的热情,而且我也不适合传道授业解惑hhh 安全论坛: 先知社区 freebuf ...

  6. 手机APP测试(测试点、测试流程、功能测试)

    1.功能测试 1.1 启动 APP安装完成后,是否可以正常打开,稳定运行 APP的速度是可以让人接受,切换是否流畅 网络异常时,应用是否会崩溃:在请求超时的情况下,如果程序逻辑处理的不好,就有可能发生 ...

  7. idea2020.2.x/2020.3.x最新破解版方法教程无限永久重置插件激活码

    idea是一个java开发工件,相信我所有的朋友都用过.本教程教你做到完美,安全,永久.破解 idea2020.2.x和idea2020.3.x的所有版本绝对是100% 激活,支持Windows Ma ...

  8. Nodepad++ 没有TextFX Characters插件

    Nodepad++ 没有TextFX Characters插件 原因:从6.5以上的某个版本开始,就没有了默认的这个插件. 我试了最新的版本下载插件也不行,只好下载一个6.4.5的版本,再更新插件管理 ...

  9. 落谷 P2401 不等数列

    题目链接. Solution 状态设计 设 \(f_{i, j}\) 为 \(1\) 到 \(i\) 的排列,其中有 \(j\) 个 \(\text{'<'}\) 的方案数. 状态转移 尝试从 ...

  10. 算法——K 个一组翻转链表

    给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序. 示例: 给你这个 ...