pytest(7)-yield与终结函数】的更多相关文章

通过上一篇文章,我们已经知道了pytest中,可以使用Fixture来完成运行测试用例之前的一些操作如连接数据库,以及测试执行之后自动去做一些善后工作如清空脏数据.关闭数据库连接等. 我们已经学会了fixture函数的简单用法,但其实fixture还提供了两种非常优雅高效的写法,来完成测试执行前的处理操作与执行后的处理操作,即使用yield或addfinalizer来实现. yield 在fixture中的关键字yield主要有两个作用: yield代替return进行参数的传递 起到代码的分割…
1.fixture的teardown操作并不是独立的函数,用yield关键字呼唤teardown操作 2.scope="module" 1.fixture参数scope=”module”,module作用是整个.py文件都会生效( 整个文件只会执行一次), 用例调用时,参数写上函数名称就行 # 新建一个文件test_f1.py # coding:utf-8 import pytest @pytest.fixture(scope="module") def open(…
yield作用类似于return,其本质是一个迭代器. 当程序执行到yield时,会结束本次循环,返回一个值,然后内置含有next()函数, 下次在执行时,会从yield结束的地方继续执行. 带yield的函数是一个生成器,内置next函数,当本次执行到yield结束时候,下一次next就会从本次停止的地方继续执行, 碰到yield时候,就会return生成的数. send函数 send函数给参数赋值,其执行过程也是从上一步的yield结束的时候开始. 给出一段代码参考: def foo():…
前言:1.当 pytest.fixture(scope="module") 时,pytest的yieId 类似unittest的teartownclass 2.当 pytest.fixture(scope="function") 时,pytest的yieId 类似unittest的teartown 3.其中一个用例出现异常,不会影响yield后面的teardown执行,运行结果互不影响 4.如果在setup就异常了,那么是不会去执行yield后面的teardown内…
def range(*args,step= 1): args = list(args) if len(args) == 2: yield args[0] while args[0]<args[1]-1: args[0] +=step yield args[0] elif len(args) == 1: count = 0 yield count while count < args[0]-1: count += 1 yield count for i in range(10): print(i…
前言 上一篇讲到fixture通过scope参数控制setup级别,既然有setup作为用例之前前的操作,用例执行完之后那肯定也有teardown操作. 这里用到fixture的teardown操作并不是独立的函数,用yield关键字呼唤teardown操作 scope="module" 1.fixture参数scope="module",module作用是整个.py文件都会生效,用例调用时,参数写上函数名称就行 # 新建一个文件test_f1.py # codin…
1. 简介 上一篇中,我们刚刚实现了在每个用例之前执行初始化操作,那么用例执行完之后如需要清除数据(或还原)操作,可以使用 yield 来实现.fixture通过scope参数控制setup级别,既然有setup作为用例之前前的操作,用例执行完之后那肯定也有teardown操作.这里用到fixture的teardown操作并不是独立的函数,用yield关键字呼唤teardown操作.fixture的teardown操作并不是独立的函数,可以用yield关键字呼唤teardown操作. 我们之前学…
在之前介绍pytest中的fixture用法的文章中https://zhuanlan.zhihu.com/p/87775743,提到了teardown的实现. 最近在翻pytest官方文档的时候,又发现了addfinalizer这个函数,跟yield一样,也可以实现在case结束后运行关键字之后的代码.那今天就来捋一下这2者的用法和区别. 一.yield 再来简单回顾下pytest里的setUp和tearDown的用法,我们可以看到,下方代码里有三个case用例,分别是test_开头. 而在de…
当我们运行测试函数时,我们希望确保测试函数在运行结束后,可以自己清理掉对环境的影响. 这样的话,它们就不会干扰任何其他的测试函数,更不会日积月累的留下越来越多的测试数据. 用过unittest的朋友相信都知道teardown这个函数,做的是一样的事情,那么下面姑且就把这种"善后"工作的代码 叫做teardown代码吧. 而pytest中的fixture,也提供了这样一个非常有用的系统,我们可以在里面定义teardown代码. 这里可以使用2种方式来实现,分别是yield和addfina…
fixture函数存在意义 与python自带的unitest测试框架中的setup.teardown类似,pytest提供了fixture函数用以在测试执行前和执行后进行必要的准备和清理工作.但是相对来说又比setup.teardown好用. firture相对于setup和teardown的优势 命名方式灵活,不局限于setup和teardown这几个命名 conftest.py 配置里可以实现数据共享,不需要import就能自动找到一些配置 scope="module" 可以实现…