当前位置: 首页 > news >正文

建设招标网官方网站电脑版做系统简单还是网站简单

建设招标网官方网站电脑版,做系统简单还是网站简单,网站建设价格报价,wordpress好用1. 简介 上一篇中#xff0c;我们刚刚实现了在每个用例之前执行初始化操作#xff0c;那么用例执行完之后如需要清除数据#xff08;或还原#xff09;操作#xff0c;可以使用 yield 来实现。fixture通过scope参数控制setup级别#xff0c;既然有setup作为用例之前前的操…1. 简介 上一篇中我们刚刚实现了在每个用例之前执行初始化操作那么用例执行完之后如需要清除数据或还原操作可以使用 yield 来实现。fixture通过scope参数控制setup级别既然有setup作为用例之前前的操作用例执行完之后那肯定也有teardown操作。 这里用到fixture的teardown操作并不是独立的函数用yield关键字呼唤teardown操作。fixture的teardown操作并不是独立的函数可以用yield关键字呼唤teardown操作。  我们之前学习的都是测试用例的前置固件也就是相当于“setup”。说到这细心的你可能想到了那有没有什么方式可以表示出“teardown”这就是我们今天学习的yield和addfinalizer。 yield yield是一个关键字它不是单独存在的要写在fixtrue标记的固件中。 我们在声明的固件myfixture中加入yield关键字在它下面写测试用例执行后想要运行的代码其他有关于固件的使用没有任何差别。需要说明的一点是我们在pytest主函数中增加了一个参数“–setup-show”他会显示出固件的执行情况。 fixture里面的teardown用yield来唤醒teardown的执行 如果测试用例中的代码出现异常或者断言失败并不会影响他的固件中yield后的代码执行但是如果固件中的yield之前的代码也就是相当于setup部分的带代码出现错误或断言失败那么yield后的代码将不会再执行当然测试用例中的代码也不会执行。 我们也可以通过request.addfinalizer()的方式实现“teardown” 我们在固件中传入request参数又在固件中定义了一个内置函数最后将定义的内置函数添加到request的addfinalizer中。 2. scopefunction 当 pytest.fixture(scopefunction) 时pytest的yieId 类似unittest的teartown。每个方法函数都会执行一次 1.新建 test_function1.py文件我们看一下是不是这样的。 2.1 代码实现 2.2 参考代码 # codingutf-8 # 1.导入模块 import pytestpytest.fixture(scopefunction) def login():print(登录成功)yieldprint(用例执行完成收尾)def test1(login):print(操作1)print(-----------------------------------------------)def test2(login):print(操作2)print(-----------------------------------------------)def test3(login):print(操作3)print(-----------------------------------------------)if __name__ __main__:pytest.main([-s, test.py]) 2.3 运行结果 运行代码后控制台打印如下图的结果 从结果看出虽然test1,test2,test3三个地方都调用了login函数并且它会在每一个用例前执行一次 2.如果test1不调用,test2调用login,test3不调用运行顺序会是怎样的 2.4 参考代码 # codingutf-8 # 1.导入模块 import pytestpytest.fixture(scopefunction) def login():print(登录成功)yieldprint(用例执行完成收尾)def test1():print(操作1)print(-----------------------------------------------)def test2(login):print(操作2)print(-----------------------------------------------)def test3():print(操作3)print(-----------------------------------------------)if __name__ __main__:pytest.main([-s, test.py]) 2.5 运行结果 运行代码后控制台打印如下图的结果 从结果看出function级别的fixture在当前.py模块里只会在用例test_s2第一次调用前执行一次 3.scopemodule 1.fixture参数scope”module”module作用是整个.py文件都会生效 整个文件只会执行一次用例调用时参数写上函数名称就行 3.1 代码实现 3.2 参考代码 # codingutf-8 # 1.导入模块 import pytestpytest.fixture(scopemodule) def login():print(登录成功)yieldprint(用例执行完成收尾)def test1(login):print(操作1)print(-----------------------------------------------)def test2(login):print(操作2)print(-----------------------------------------------)def test3(login):print(操作3)print(-----------------------------------------------)if __name__ __main__:pytest.main([-s, test_bjhg_function1.py]) 3.3 运行结果 运行代码后控制台打印如下图的结果 从结果看出虽然test1,test2,test3三个地方都调用了login函数但是它只会在第一个用例前执行一次 2.如果test1不调用,test2调用login,test3不调用运行顺序会是怎样的 3.4 参考代码 # codingutf-8 # 1.导入模块 import pytestpytest.fixture(scopemodule) def login():print(登录成功)yieldprint(用例执行完成收尾)def test1():print(操作1)print(-----------------------------------------------)def test2(login):print(操作2)print(-----------------------------------------------)def test3():print(操作3)print(-----------------------------------------------)if __name__ __main__:pytest.main([-s, test.py]) 3.5 运行结果 运行代码后控制台打印如下图的结果 从结果看出module级别的fixture在当前.py模块里只会在用例test_s2第一次调用前执行一次 4. yield执行teardown 细心的童鞋或者小伙伴可以看到我前边的代码中有一个yield关键字大家有点好奇是做什么的这一小节就给你答疑解惑。其实就是用来唤醒teardown。 1.fixture里面的teardown用yield来唤醒teardown的执行 4.1 代码实现 4.2 参考代码 # codingutf-8 # 1.导入模块 import pytestpytest.fixture(scopemodule) def login():print(登录成功)yieldprint(执行teardown!)print(用例执行完成收尾)def test1(login):print(操作1)print(-----------------------------------------------)def test2(login):print(操作2)print(-----------------------------------------------)def test3(login):print(操作3)print(-----------------------------------------------)if __name__ __main__:pytest.main([-s, test.py]) 4.3 运行结果 运行代码后控制台打印如下图的结果 5. yield遇到异常 1.如果其中一个用例出现异常不影响yield后面的teardown执行,运行结果互不影响并且在用例全部执行完之后会呼唤teardown的内容 5.1 代码实现 5.2 参考代码 # codingutf-8 # 1.导入模块 import pytestpytest.fixture(scopemodule) def login():print(登录成功)yieldprint(执行teardown!)print(用例执行完成收尾)def test1(login):print(操作1)print(-----------------------------------------------)# 如果第一个用例异常了不影响其他的用例执行raise NameError # 模拟异常def test2(login):print(操作2)print(-----------------------------------------------)def test3(login):print(操作3)print(-----------------------------------------------)if __name__ __main__:pytest.main([-s, test.py]) 5.3 运行结果 运行代码后控制台打印如下图的结果 2.如果在setup就异常了那么是不会去执行yield后面的teardown内容了 3.yield也可以配合with语句使用以下是官方文档给的案例 # 官方文档案例 # content of test_yield2.pyimport smtplib import pytestpytest.fixture(scopemodule) def smtp():with smtplib.SMTP(smtp.gmail.com) as smtp:yield smtp # provide the fixture value 6.addfinalizer终结函数 1.除了yield可以实现teardown,在request-context对象中注册addfinalizer方法也可以实现终结函数。 # 官方案例# content of conftest.py import smtplib import pytestpytest.fixture(scopemodule) def smtp_connection(request):smtp_connection smtplib.SMTP(smtp.gmail.com, 587, timeout5)def fin():print(teardown smtp_connection)smtp_connection.close()request.addfinalizer(fin)return smtp_connection # provide the fixture value 2.yield和addfinalizer方法都是在测试完成后呼叫相应的代码。但是addfinalizer不同的是 他可以注册多个终结函数。 这些终结方法总是会被执行无论在之前的setup code有没有抛出错误。这个方法对于正确关闭所有的fixture创建的资源非常便利即使其一在创建或获取时失败 参考文档pytest documentation
http://www.zqtcl.cn/news/628601/

相关文章:

  • 网站平台建设总结品牌网页
  • 网站建设如何就接入支付宝企业云平台
  • swoole做网站做网站建设的上市公司有哪些
  • 建设银行江苏官网招聘网站网站设置首页连接分类页的视频教程
  • 通过dede访问自己做的网站高端 建站
  • wordpress自定义json温岭新站seo
  • 网站开发的五个阶段wordpress安装在本地
  • 郴州网站建设有哪些sem优化
  • 在百度怎么申请自己的网站深圳网站建设迅美
  • wordpress 企业网站教程网站开发集成软件
  • 专业的西安免费做网站wordpress手机端插件
  • 口碑好网站建设优化大师win10下载
  • 网站建设普及型小程序开发平台好的有哪些
  • 网站建设与管理专业凡科做的网站好吗
  • wordpress添加变量福州seo网站管理
  • 哔哩哔哩免费网站观看网站制作合同书
  • 自流井移动网站建设建设网站的一般步骤
  • 手机导航网站模板上海低价网站建设
  • 如何开公司注册需要多少钱东莞网站推广优化网上推广公司
  • 新闻门户网站制作教育培训网站开发
  • 网站建设公司哪个好一点最近一周的热点新闻
  • 做最优秀的自己的视频网站佛山搜索引擎优化
  • 六盘水市网站建设免费封面设计在线制作生成
  • 北京快速建站制作公司wordpress wpoptions
  • iis如何建立网站门源县住房和城乡建设局网站
  • 装修素材图片都从什么网站找铁门关网站建设
  • 网站服务器环境不支持mysql数据库免费商标图案logo
  • 以什么主题做网站好wordpress怎么设置404
  • 为什么手机进网站乱码网络营销工具的特点
  • DW怎么做网站下拉菜单网站建设外包网站