pytest中的conftest,pytest conftest 传变量

  pytest中的conftest,pytest conftest 传变量

  Confiftest.py是Pytest特有的本地测试配置文件,可以用来设置项目级fixture和导入外部插件。本文介绍了pytest框架confiftest.py文件的使用方法,感兴趣的朋友来看看吧。

  00-1010conftest.py文件特点1、confitest.py文件的介绍2、confitest.py的注意事项3、confitest.py的使用4、confitest.py文件在不同位置的优先级5、confitest.py中夹具的范围6、总结:

  

目录

 

  相同目录中的所有测试文件将在运行前执行。文件conftest.py不需要导入到conftest.py中,pytest会自动用例会识别文件,放在项目根目录下就可以在全局目录中调用。如果它放在一个包中,它将在该包中有效。在运行用例的同一个包下可以有多个conftest.pyconftest.py,有__init__。可以被调用的py文件。py文件。当倍数。py文件,您可以让confintest.py只调用一次或多次。

  

conftest.py文件特点

 

  Conftest.py文件是Pytest框架中非常重要的东西。它可以在这个文件中编写Fixture函数。这个Fixture函数的作用相当于Unittest框架中的setup()前置函数和teardown()后置函数。虽然Pytest框架也有setup()前置函数和teardown()后置函数,但是实际工作中并不需要写在测试用例文件中,只需写在conftests.py中即可,Pytest框架会自动查找conftest.py文件中的内容,更加灵活。

  总结:在实际工作中,通常将conftest.py和@pytest.fixture()一起使用,实现全局前后应用。

  

1、conftest.py文件介绍

 

  Conftest.py文件是一个单独存储的夹具配置文件,其名称不可更改。您可以在不同的中使用相同的夹具功能。py文件。原则上,conftest.py需要和正在运行的用例放在同一个目录下,并且有一个__init__。py文件,所以conftest.py作用于整个目录。如果您希望Fixture与所有测试共享,那么您可以将conftest.py文件放在测试框架的根目录中。不需要任何imprt导入操作就可以读取conftest.py文件的内容,因为Pytest是例会自动搜索的。建议测试项目的所有fixture都存储在conftest.py文件中,并将conftest.py作为Pytest的fixture仓库。

  

2、conftest.py的注意事项

 

  (1)在测试框架的根目录或包中创建conftest.py文件。

  1.学习目标

  掌握conftest.py文件的格式。

  2.操作步骤

  2.1不能修改conftest.py文件名。

  Conftest.py文件存储项目的所有夹具。

  且便于夹具管理和维护。

  2.2在conftest.py中定义函数

  在函数前添加@pytest.fixture () decorator。

  将fixture标识的函数名输入到测试用例的函数中。

  提示:conftest.py文件放在项目的根目录下,作用域是全局的。

  Conftest.py文件放在某个包下,它的作用域只在那个包内。

  导入pytest

  来自硒I

  mport 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

 

  

 

  

4、不同位置conftest.py文件的优先级

 

  其作用范围是当前目录包括子目录里的测试模块。

  

  • 比如在测试框架的根目录创建conftest.py文件,文件中的Fixture的作用范围是所有测试模块。

  • 比如在某个单独的测试文件夹里创建conftest.py文件,文件中Fixture的作用范围,就仅局限于该测试文件夹里的测试模块。

  • 该测试文件夹外的测试模块,或者该测试文件夹外的测试文件夹,是无法调用到这个conftest.py文件中的Fixture。

  • 如果测试框架的根目录和子包中都有conftest.py文件,并且这两个conftest.py文件中都有一个同名的Fixture,实际生效的是测试框架中子包目录下的conftest.py文件中配置的Fixture。

  • 提示:一个用例可以添加多个conftest.py文件中定义的Fixture夹具,如下:

 

  

# 注意:要把conftest.py文件中定义的fixture方法添加到用例中

 

  

 

  

5、conftest.py中Fixture(夹具)的作用域

 

  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。

 

  

 

  

6、总结:

 

  

  • Pytest框架中的setup()/teardown()函数,setup_class()/teardown_class()函数。他们是作用于所有用例或者所有类的。

  • @pytest.fixtrue()的作用域是既可以部分用例,也可以全部用例的前后置。

  • conftest.py文件和@pytest.fxtrue()装饰器结合使用,作用于全局用例的前后置。

 

  到此这篇关于Pytest框架 conftest.py文件的使用详解的文章就介绍到这了,更多相关Pytest conftest.py文件内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: