pytest自动化3:fixture之conftest.py实现setup

出处:https://www.cnblogs.com/yoyoketang/p/9390073.html

前言:

前面一篇讲到用例加setup和teardown可以实现在测试用例之前或之后加入一些操作,但这种是整个脚本全局生效的,如果我想实现以下场景:

用例1需要先登录,用例2不需要先登录,用例3需要先登录。很显然上篇学到的就不合适了,这就是本篇学习的目的,自定义测试用例的预置条件。

一、看个实例

通过以上实例,来了解到fixture特点:

fixture(scope = "function", params=None, autouse=False, ids=None, name=None)

1.  fixture使用装饰器标记功能

2.  arg scope:scope有四个等级参数----"function" (默认), "class", "module" or "session"

     arg params:一个可选的参数列表,它将导致多个参数调用fixture功能和所有测试使用它

     arg autouse:如果为True,则为所有测试激活fixture func 可以看到它。 如果为False(默认值)则显式需要参考来激活fixture

     arg ids:每个字符串id的列表,每个字符串对应于params 这样他们就是测试ID的一部分。 如果没有提供ID它们将从params自动生成

     arg name:fixture的名称。 这默认为装饰函数的名称。 如果fixture在定义它的同一模块中使用,夹具的功能名称将被请求夹具的功能arg遮蔽; 解决这个问题的一种方法是将装饰函数命名

                        “fixture_ <fixturename>”然后使用”@ pytest.fixture(name ='<fixturename>')。

二、conftest.py配置

1.原因说明

          上面一个案例是在同一个.py文件中,多个用例调用一个登陆功能,如果有多个.py的文件都需要调用这个登陆功能的话,那就不能把登陆写到用例里面去了。
此时应该要有一个配置文件,单独管理一些预置的操作场景,pytest里面默认读取conftest.py里面的配置。

conftest.py配置需要注意以下点:

  • conftest.py配置脚本名称是固定的,不能改名称
  • conftest.py与运行的用例要在同一个pakage下,并且有__init__.py文件
  • 不需要import导入 conftest.py,pytest用例会自动查找

2.实例参考

ok。

原文地址:https://www.cnblogs.com/cudy/p/10485038.html