conftest.py文件的特点有哪些,用法及注意事项是什么
Admin 2022-08-13 群英技术资讯 845 次浏览
今天小编跟大家讲解下有关“conftest.py文件的特点有哪些,用法及注意事项是什么”的内容 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了相关资料,希望小伙伴们看了有所帮助。conftest.py文件是Pytest框架里面一个很重要的东西,它可以在这个文件里面编写Fixture函数,这个Fixture函数的作用,就相当于Unittest框架里面的setup()前置函数和teardown()后置函数,虽然Pytest框架也有setup()前置函数和teardown()后置函数,但是在实际工作中没必要写在测试用例文件中,直接写在conftests.py里面就好了,Pytest框架会自动去找conftest.py文件里面的东西,这样更灵活。
总结:在实际工作中,通常conftest.py和@pytest.fixture()结合使用,实现全局的前后置应用。
conftest.py文件是单独存放的一个夹具(Fixture)配置文件,名称是不能更改。.py文件中使用同一个Fixture函数。conftest.py需要和运行的用例放到同一目录中,并且有__init__.py文件,那么conftest.py作用于整个目录。conftest.py文件放在测试框架的根目录下。conftest.py文件中的内容,不需要做任何的imprt导入的操作就能够读取到,因为Pytest用例会自动查找。conftest.py文件中,把conftest.py当作Pytest的Fixture仓库。(1)测试框架的根目录或者包中创建conftest.py文件
"""
1.学习目标
掌握conftest.py文件编写格式
2.操作步骤
2.1 conftest.py文件名不能修改
conftest.py文件中存放项目所有的fixture
方便对fixture管理和维护
2.2 在conftest.py定义函数
在函数前添加@pytest.fixture()装饰器
在测试用例的函数中传入fixture标识的函数名。
提示:conftest.py文件放在项目的根目录,作用域是全局的。
conftest.py文件放在某一个包下,作用域只在该包内。
"""
import pytest
from selenium import webdriver
@pytest.fixture()
def login():
print("打开APP")
print("登录成功")
yield # 当用例执行完成后,执行yield后的代码
print("关闭APP")
@pytest.fixture()
def driver(request): # request是Pytest中的一个关键字,固定写法。
# 步骤1:创建浏览器驱动对象
driver = webdriver.Chrome()
# 步骤3:定义用例执行后要执行的代码,封装到一个函数中
def end(): # 这个end函数命是自定义的
driver.quit()
# 步骤4:执行上面封装的代码。
# 通过request关键字,结束上面的函数。
request.addfinalizer(end) # 终结函数
# 步骤2:返回浏览器驱动对象,给测试用例
return driver
(2)测试用例文件如下
import pytest
# 注意:要把conftest.py文件中定义的fixture方法添加到用例中
def test_add_cart(login): # 把conftest.py文件中的fixture函数传入用例
print("添加购物车--需要登录")
def test_add_address(login):
print("添加收货地址--需要登录")
if __name__ == '__main__':
pytest.main()
"""
执行结果:
test_01.py::test_add_cart 打开APP
登录成功
添加购物车--需要登录
PASSED关闭APP
test_01.py::test_add_address 打开APP
登录成功
添加收货地址--需要登录
PASSED关闭APP
"""
其作用范围是当前目录包括子目录里的测试模块。
conftest.py文件,文件中的Fixture的作用范围是所有测试模块。conftest.py文件,文件中Fixture的作用范围,就仅局限于该测试文件夹里的测试模块。conftest.py文件中的Fixture。conftest.py文件,并且这两个conftest.py文件中都有一个同名的Fixture,实际生效的是测试框架中子包目录下的conftest.py文件中配置的Fixture。conftest.py文件中定义的Fixture夹具,如下:# 注意:要把conftest.py文件中定义的fixture方法添加到用例中
def test_add_cart(login, driver):
print("添加购物车--需要登录")
Fixture的scope参数也适用conftest.py文件中Fixture的特性:
conftest.py文件中Fixture的scope参数为session,那么所有的测试文件执行前(后)执行一次conftest.py文件中的Fixture。conftest.py文件中Fixture的scope参数为module,那么每一个测试文件执行前(后)都会执行一次conftest.py文件中Fixture。conftest.py文件中Fixture的scope参数为class,那么每一个测试文件中的测试类执行前(后)都会执行一次conftest.py文件中Fixture。conftest.py文件中Fixture的scope参数为function,那么所有文件的测试用例执行前(后)都会执行一次conftest.py文件中Fixture。setup()/teardown()函数,setup_class()/teardown_class()函数。他们是作用于所有用例或者所有类的。@pytest.fixtrue()的作用域是既可以部分用例,也可以全部用例的前后置。conftest.py文件和@pytest.fxtrue()装饰器结合使用,作用于全局用例的前后置。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要为大家介绍了python多线程中的定时器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
这篇文章主要为大家详细介绍了python面向过程实现飞机大战,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这篇文章主要介绍了Python爬虫之线程池的使用,文中有非常详细的的代码示例,对正在学习python爬虫的小伙伴们很有帮助哟。需要的朋友可以参考下
Python基础-函数(三)<1> 对返回的数据直接拆包。<2> 交换2个变量的值
这篇文章主要介绍了Python中的 enumerate和zip,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008