一、fixture scope 为session 级别是可以跨 .py模块调用的,也就是当我们有多个 .py文件的用例时,如果多个用例只需调用一次fixture,可以将scope=‘session’,并且写到conftest.py文件里。写到conftest.py文件可以全局调用这里面的方法。使用的时候不需要导入conftest.py文件。使用conftest.py的规则:

1.conftest.py这个文件名是固定,不可以更改

2.conftest.py 与运行用例在同一个包下,并且该包中有__int__.py文件

3.使用的时候不需要导入conftest.py ,pytest会自动识别到这个文件

4.放到项目的根目录下可以全局调用,放到某个package 下,就在这个package 内有效

 

案例:

在运行整个项目下的所有用例,只执行一次打开浏览器。执行完所有的用例之后再执行关闭浏览器,可以在这个项目下创建一个conftest.py文件,将打开浏览器操作的方法

放在这个文件下,并添加一个装饰器 @pytest.fixture(scope=’session’),就能够实现整个项目所有测试用例的浏览器复用,案例目录结构如下:

 

 创建目录test_scope,并在目录下创建三个文件conftest.py   test_scope1.py和test_scope2.py

conftest.py文件定义了公共方法,pytest会自动读取conftest.py定义的方法,代码如下

#!/usr/bin/env python
# _*_coding: utf-8 _*_

import pytest

@pytest.fixture(scope="session")
def open():
    print("打开浏览器")
    yield

    print("执行teardown !")
    print("关闭浏览器")

 

创建文件test_scope1.py代码如下:

!/usr/bin/env python
# _*_coding: utf-8 _*_

import pytest


def test_search1(open):
    prin("test_search1")
    pass


def test_search2(open):
    print("test_search2")
    pass


def test_search3(open):
    prin("test_search3")
    pass

创建test_scope2.py 代码如下

#!/usr/bin/env python
# _*_coding: utf-8 _*_

class TestFunc():
    def test_case1(self):
        print("test_case1,需要登入")

    def test_case2(self):
        print("test_case2,不需要登入")

    def test_case3(self):
        print("test_case3,需要登入")

打开CMD,进入目录test_scope执行如下命令

pytest -v -s

或者

pytest  -v  -s  test_scope1.py  test_scope2.py

 

版权声明:本文为vigo01原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/vigo01/p/14336989.html