"""
模块级(setup_module/teardown_module)开始于模块始末,全局的
函数级(setup_function/teardown_function)只对函数用例生效(不在类中)
类级(setup_class/teardown_class)只在类中用例之前或之后运行一次(在类中)
方法级(setup_method/teardown_method)开始于方法始末(在类中)
类里面的(setup/teardown)运行在调用方法的前后
"""
# setup_module 及 teardown_module模块,代码示例
import pytest

def setup_module():
print("setup_module:整个*.py只执行一次")
print('比如浏览器打开的动作')

def teardown_module():
print("teardown_module:整个*.py只执行一次")
print('比如浏览器关闭的动作')

def test_one():
print("正在执行------test_one")
AA = 'this'
assert 'i' in AA

def test_two():
print("正在执行------test_two")
BB = 'Str'
AA = 'Str'
assert AA == BB

def test_three():
print("正在执行------test_three")
AA = 'one'
assert 'i' != AA

if __name__ == '__main__':
pytest.main()

运行代码结果:

# setup_function及tear_function 函数级模块,代码示例如下:

import pytest
def setup_function():
print("setup_function:每个用例开始前都会执行")

def teardown_function():
print("teardown_function:每个用例结束前都会执行")

def test_one():
print("正在执行------test_one")
AA = 'this'
assert 'i' in AA

def test_two():
print("正在执行------test_two")
BB = 'Str'
AA = 'Str'
assert AA == BB

def test_three():
print("正在执行------test_three")
AA = 'one'
assert 'i' != AA

if __name__ == '__main__':
pytest.main()

# 运行结果如下:

优先级划分: setUp_class  》 setUp_module 》setUp

# 类和方法
class TestCase():

def setup(self):
print("setup: 每个用例开始前执行")

def teardown(self):
print("teardown: 每个用例结束后执行")

def setup_class(self):
print("setup_class:所有用例执行前执行")

def teardown_class(self):
print("teardown_class:所有用例结束后执行")

def setup_method(self):
print("setup_method: 每个用例开始前执行")

def teardown_method(self):
print("teardown_method: 每个用例结束后执行")

def test_one(self):
print("正在执行----test_one")
x = "this"
assert 'h' in x

def test_two(self):
print("正在执行----test_two")
x = "hello"
assert 'hello' == x

def test_three(self):
print("正在执行----test_three")
a = "hello"
b = "hello world"
assert a in b

if __name__ == '__main__':
pytest.main()

代码执行结果如下:

先执行函数 --> 方法 --> 再执行class类里面的类方法

#函数和类混合
def setup_module():
print("setup_module:整个.py模块只执行一次")
print("比如:所有用例开始前只打开一次浏览器")

def teardown_module():
print("teardown_module:整个.py模块只执行一次")
print("比如:所有用例结束只最后关闭浏览器")

def setup_function():
print("setup_function:每个用例开始前都会执行")

def teardown_function():
print("teardown_function:每个用例结束前都会执行")

def test_one():
print("正在执行----test_one")
x = "this"
assert 'h' in x

def test_two():
print("正在执行----test_two")
x = "hello"
assert x != 'check'

class TestCase():

def setup_class(self):
print("setup_class:类中所有用例开始执前执行")

def teardown_class(self):
print("teardown_class:类中所有用例结束后执行")

def test_three(self):
print("正在执行----test_three")
x = "this"
assert 'h' in x

if __name__ == "__main__":
pytest.main()

Pytest单元测试框架之setup/teardown模块示例操作的更多相关文章

  1. Pytest单元测试框架之简单操作示例

    前言: Pytest是第三方单元格测试框架,更加简单,灵活,而且提供了更多丰富的扩展: Pytest与UnitTest框架的区别 UnitTest测试用例执行顺序是依照ascii码执行,而Pytest ...

  2. Pytest单元测试框架-测试用例运行规则

    1.Pytest测试用例运行规则 在pytest单元测试框架下面执行用例,需要满足以下几个特点: 1. 文件名以test_*.py开头或者*_test.py 2. 测试类.测试函数以test开头 3. ...

  3. Pytest单元测试框架-Pytest环境安装

    unittest是python自带的单元测试框架,它封装好了一些校验返回的结果方法和一些用例执行前的初始化操作,使得单元测试易于开展,因为它的易用性,很多同学也拿它来做功能测试和接口测试,只需简单开发 ...

  4. Pytest单元测试框架:插件-allure-pytest环境搭建并在本地生成一个测试报告

    之前写了allure-pytest的官方文档啃的内容,有些交流的朋友,实践起来没什么头绪,所以就有了这篇文章,也给自己填个坑 第一步:搭建Allure.JDK环境 1. 搭建JDK环境 不装jdk你会 ...

  5. Pytest单元测试框架-学习

    pytest: Python的一个单元测试框架,基于UnitTest二次开发,语法上更加简洁,可以用来做Python开发项目的单元测试,UI自动化.接口自动化测试等,有很多的插件访问Pytest插件汇 ...

  6. Pytest单元测试框架之FixTure基本使用

    前言: 在单元测试框架中,主要分为:测试固件,测试用例,测试套件,测试执行及测试报告: 测试固件不难理解,也就是我们在执行测试用例前需要做的动作和测试执行后的需要做的事情: 比如在UI自动化测试中,我 ...

  7. 学习-Pytest(三)setup/teardown

    1. 用例运行级别 模块级(setup_module/teardown_module)开始于模块始末,全局的 函数级(setup_function/teardown_function)只对函数用例生效 ...

  8. Pytest单元测试框架——Pytest+Allure+Jenkins的应用

    一.简介 pytest+allure+jenkins进行接口测试.生成测试报告.结合jenkins进行集成. pytest是python的一种单元测试框架,与python自带的unittest测试框架 ...

  9. Pytest 单元测试框架

    1.pytest 是 python 的第三方单元测试框架,比自带 unittest 更简洁和高效 2.安装 pytest pip install pytest 3.验证 pytest 是否安装成功 p ...

随机推荐

  1. 在NVIDIA-Jetson平台上构建智能多媒体服务器

    在NVIDIA-Jetson平台上构建智能多媒体服务器 Building a Multi-Camera Media Server for AI Processing on the NVIDIA Jet ...

  2. 用NVIDIA NsightcComputeRoofline分析加速高性能HPC的应用

    用NVIDIA NsightcComputeRoofline分析加速高性能HPC的应用 编写高性能的软件不是一件简单的任务.当有了可以编译和运行的代码之后,当您尝试并理解它在可用硬件上的执行情况时,将 ...

  3. java 全端开源 电商系统 springboot uniapp 小程序 前后端分离 高可用

    Lilishop B2B2C商城系统 官方公众号 & 开源不易,如有帮助请点Star 所有jar包均可从maven中央仓库下载,无二次封装jar包,全端开源,无后门,无监控. 介绍 官网:ht ...

  4. fiddler选项卡-AutoResponder(自动响应)

    AutoResponder 它可以把本来服务器响应的内容,使用本地内容来响应.这个对网站开发人员来说很有用. 1.AutoResponder界面 2.界面功能解析,根据上图标注位置 1.Enable ...

  5. oracle审计表迁移

    ============ oracle审计表迁移到新的表空间 ============ 前言 oracle数据库开启审计功能后会占用大量的SYSTEM系统表空间,要么定时对审计表进行清理,要么对系统表 ...

  6. CArray CList CMap 插入与遍历效率对比

    前言:程序中经常用到不定量数组,选择上可以使用CArray,CList,CMap,而这三者插入及遍历的效率,未测试过,随着数据量越来越大,需要做程序上的优化,于是比较下三种类型的插入盒遍历的效率. 一 ...

  7. Web打印插件实现思路(C#/Winform)

    最近,客户有个需求过来,Web端无预览打印,美其名曰:快捷打印. 当时第一反应就是找插件,拿来主义永远不过时.找了一圈发现,免费的有限制,没限制的需要收费(LODOP真的好用).说来就是一个简单的无预 ...

  8. 这 7 个 Linux 命令,你是怎么来使用的?

    使用 Linux 系统的开发者,很多人都有自己喜欢的系统命令,下面这个几个命令令是我平常用的比较多的,分享一下. 我不会教科书般的罗列每个指令的详细用法,只是把日常开发过程中的一些场景下,经常使用的命 ...

  9. 【NX二次开发】获取用户输入的字符串uc1603

    效果: 源码: extern DllExport void ufsta(char *param, int *returnCode, int rlen) { UF_initialize(); strin ...

  10. 【MySQL】MySQL Workbench 8.0 CE 界面汉化

    汉化前: 找到这个文件: 打开文件,复制下面这段替换进去保存,重新打开软件即可:(*改之前备份一下) <?xml version="1.0"?> <data> ...