pytest测试框架(二)---fixture介绍

目录

一、fixture函数的定义

二、fixture函数的调用

三、fixture函数的返回

四、conftest.py的使用

五、使用实例


一、fixture函数的定义

把一个函数定义为fixture很简单,只需要在函数声明之前加上“@pytest.fixture”,参数如下:

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

     scope:有四个级别参数 "function" (默认), "class", "module" or "session":

         ☆ session多个文件调用一次,可以跨.py文件调用

         ☆ module每个.py文件调用一次

         ☆ class每个类调用一次

         ☆ function每个函数或方法都会调用

     params: 一个可选的参数列表,默认为None。当它不为None时,params里面的每个值,fixture都会去调用执行一次,就像执行for循环一样把params里的值遍历一次;

     autouse: 当默认为False,就可以选择另外两种方式来调用fixture。当设置为True时,在一个session内的所有的测试用例都会自动调用这个fixture;

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

     name: fixture的名称,代表装饰函数的名称。

 

二、fixture函数的调用

fixture函数定义完成之后,如果想在测试用例中调用它,调用方式有三种:

    ☆ 直接调用;

    ☆ 使用fixture调用,在测试用例前加上“@pytest.mark.usefixtures(“名”)”;

    ☆ 使用fixture的autouse参数来调用,将autose参数置为True,则该session下的所有用例都会自动调用它。

 

三、fixture函数的返回

fixture可以返回一个值、一个元组、list或字典。

四、conftest.py的使用

如果多个用例需要调用同一个功能。我们可以将fixture写入conftest.py 配置文件里实现数据共享,同时又方便统一管理这些公共的功能。

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

      ☆ conftest.py配置脚本名称是固定的,不能改名称;

      ☆ conftest.py与运行的用例要在同一个目录下,并且有__init__.py文件;

      ☆ 不需要import导入 conftest.py,用例会自动查找。

 

五、使用实例

conftest.py以及test_fixture.py放在同一目录下,test_fixture.py即为测试用例。

    conftest.py内容如下:

import pytest

@pytest.fixture()
def user():
    print("获取用户名")
    a = "hillwill"
    b = "wxt"
    return (a,b)

     test_fixture.py内容如下:

import pytest

def test_1(user):
    user1 = user[0]
    print("用户名1:%s" % user1)
    assert user1 == "hillwill"

def test_2(user):
    user2 = user[1]
    print("用户名2:%s" % user2)
    assert user1 == "wxt"

if __name__ == "__main__":

    pytest.main(["-s", "test_fixture.py"])

 

 

 

猜你喜欢

转载自blog.csdn.net/wxt_hillwill/article/details/111609285