博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pytest文档17-fixture之autouse=True
阅读量:6082 次
发布时间:2019-06-20

本文共 3546 字,大约阅读时间需要 11 分钟。

前言

平常写自动化用例会写一些前置的fixture操作,用例需要用到就直接传该函数的参数名称就行了。当用例很多的时候,每次都传这个参数,会比较麻烦。

fixture里面有个参数autouse,默认是Fasle没开启的,可以设置为True开启自动使用fixture功能,这样用例就不用每次都去传参了

调用fixture三种方法

  • 1.函数或类里面方法直接传fixture的函数参数名称
  • 2.使用装饰器@pytest.mark.usefixtures()修饰
  • 3.autouse=True自动使用

用例传fixture参数

方法一:先定义start功能,用例全部传start参数,调用该功能

# content of test_06.pyimport timeimport pytest# ** 作者:上海-悠悠 QQ交流群:588402570**@pytest.fixture(scope="function")def start(request):    print('\n-----开始执行function----')def test_a(start):    print("-------用例a执行-------")class Test_aaa():    def test_01(self, start):        print('-----------用例01--------------')    def test_02(self, start):        print('-----------用例02------------')if __name__ == "__main__":    pytest.main(["-s", "test_06.py"])

装饰器usefixtures

方法二:使用装饰器@pytest.mark.usefixtures()修饰需要运行的用例

# content of test_07.pyimport timeimport pytest# ** 作者:上海-悠悠 QQ交流群:588402570**@pytest.fixture(scope="function")def start(request):    print('\n-----开始执行function----')@pytest.mark.usefixtures("start")def test_a():    print("-------用例a执行-------")@pytest.mark.usefixtures("start")class Test_aaa():    def test_01(self):        print('-----------用例01--------------')    def test_02(self):        print('-----------用例02------------')if __name__ == "__main__":    pytest.main(["-s", "test_07.py"])

设置autouse=True

方法三、autouse设置为True,自动调用fixture功能

  • start设置scope为module级别,在当前.py用例模块只执行一次,autouse=True自动使用
  • open_home设置scope为function级别,每个用例前都调用一次,自动使用
# content of test_08.pyimport timeimport pytest# ** 作者:上海-悠悠 QQ交流群:588402570**@pytest.fixture(scope="module", autouse=True)def start(request):    print('\n-----开始执行moule----')    print('module      : %s' % request.module.__name__)    print('----------启动浏览器---------')    yield    print("------------结束测试 end!-----------")@pytest.fixture(scope="function", autouse=True)def open_home(request):    print("function:%s \n--------回到首页--------" % request.function.__name__)def test_01():    print('-----------用例01--------------')def test_02():    print('-----------用例02------------')if __name__ == "__main__":    pytest.main(["-s", "test_08.py"])

运行结果:

============================= test session starts =============================platform win32 -- Python 3.6.0, pytest-3.6.3, py-1.5.4, pluggy-0.6.0rootdir: D:\, inifile:plugins: metadata-1.7.0, html-1.19.0, allure-adaptor-1.7.10collected 2 items..\..\..\..\..\..\YOYO\peizhi\test_08.py -----开始执行moule----module      : YOYO.peizhi.test_08----------启动浏览器---------function:test_01 --------回到首页-------------------用例01--------------.function:test_02 --------回到首页-------------------用例02------------.------------结束测试-----------========================== 2 passed in 0.01 seconds ===========================

上面是函数去实现用例,写的class里也是一样可以的

# content of test_09.pyimport timeimport pytest# ** 作者:上海-悠悠 QQ交流群:588402570**@pytest.fixture(scope="module", autouse=True)def start(request):    print('\n-----开始执行moule----')    print('module      : %s' % request.module.__name__)    print('----------启动浏览器---------')    yield    print("------------结束测试 end!-----------")class Test_aaa():    @pytest.fixture(scope="function", autouse=True)    def open_home(self, request):        print("function:%s \n--------回到首页--------" % request.function.__name__)    def test_01(self):        print('-----------用例01--------------')    def test_02(self):        print('-----------用例02------------')if __name__ == "__main__":    pytest.main(["-s", "test_09.py"])

---------------------------------pytest结合selenium自动化完整版-------------------------

全书购买地址

作者:上海-悠悠 QQ交流群:874033608

也可以关注下我的个人公众号:yoyoketang

1070438-20181009214319480-1673365725.jpg

转载地址:http://yckwa.baihongyu.com/

你可能感兴趣的文章
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
查看>>
鼠标增强软件StrokeIt使用方法
查看>>
本地连接linux虚拟机的方法
查看>>
某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
查看>>
BABOK - 企业分析(Enterprise Analysis)概要
查看>>
Linux 配置vnc,开启linux远程桌面
查看>>
Hadoop安装测试简单记录
查看>>
CentOS6.4关闭触控板
查看>>
React Native 极光推送填坑(ios)
查看>>
Terratest:一个用于自动化基础设施测试的开源Go库
查看>>
修改Windows远程终端默认端口,让服务器更安全
查看>>
扩展器必须,SAS 2.0未必(SAS挺进中端存储系统之三)
查看>>
Eclipse遇到Initializing Java Tooling解决办法
查看>>
while((ch = getchar()) != '\n')
查看>>
好程序员web前端分享JS检查浏览器类型和版本
查看>>
Oracle DG 逻辑Standby数据同步性能优化
查看>>
exchange 2010 队列删除
查看>>
「翻译」逐步替换Sass
查看>>
H5实现全屏与F11全屏
查看>>
处理excel表的列
查看>>