当前位置 : 主页 > 编程语言 > python >

conftest.py文件(存放公用fixture)

来源:互联网 收集:自由互联 发布时间:2022-06-15
一、conftest.py基础认识 1.什么是 可以理解成一个专门存放fixture的配置文件 2.实际用途 多个测试用例文件(test_*.py)的所有用例都需要用到一个前置/后置操作,如登陆退出,浏览器的打

一、conftest.py基础认识

1.什么是

可以理解成一个专门存放fixture的配置文件

2.实际用途

多个测试用例文件(test_*.py)的所有用例都需要用到一个前置/后置操作,如登陆退出,浏览器的打开和关闭,那就不能把登录功能写到某个用例文件中去了

模块自己的fixture写入自己的py文件中即可,对于一些全局的fixture,用各种级别的conftest.py来存放管理

3.存放位置

  • 放到工程的根目录下,就可以全局调用
  • 也可以放到某个package包下,只对该package内(包括子包内)所有测试用例有效(有__init__.py的文件夹才是包,不可以放在文件夹中)

4.注意事项

  • pytest会默认读取conftest.py里面的所有fixture
  • conftest.py 文件名称是固定的,不能改动
  • 不同目录可以有自己的conftest.py,一个项目中可以有多个conftest.py
  • 测试用例文件中不需要手动import conftest.py,pytest会按fixture查找顺序自动查找到conftest:当前测试类 > 模块(.py文件)> 当前包中conftest.py > 父包中conftest.py > 根目录中conftest.py

二、实际项目举例

conftest.py文件(存放公用fixture)_用例

 

 1.项目根目录

项目启动入口,会运行项目下所有测试用例:

conftest.py文件(存放公用fixture)_根目录_02conftest.py文件(存放公用fixture)_根目录_03

import pytest

if __name__ == '__main__':
pytest.main(["-v", "-s", "-rA", "../conftest/"])

run.py

最顶层的conftest.py,一般写全局的fixture,在Web UI自动化中,可能会初始化driver:

conftest.py文件(存放公用fixture)_根目录_02conftest.py文件(存放公用fixture)_根目录_03

import pytest

@pytest.fixture(scope="session")
def login():
print("====总conftest文件 登录功能,返回账号,token===")
name = "testyy"
token = "npoi213bn4"
yield name, token
print("====总conftest文件 退出登录!!!====")


@pytest.fixture(autouse=True)
def get_info(login):
name, token = login
print(f"==总conftest文件 每个用例都默认自动调用的fixture:打印用户token: {token} ==")

conftest.py

根目录下的第一条测试用例:

conftest.py文件(存放公用fixture)_根目录_02conftest.py文件(存放公用fixture)_根目录_03

def test_get_info(login):
name, token = login
print("***项目最基础用例:获取用户个人信息***")
print(f"用户名:{name}, token:{token}")

test_case1.py

2.51job包

该包内的conftest.py,配置一些针对51job这个网站的测试用例独有的fixture,譬如:打开51job网站

conftest.py文件(存放公用fixture)_根目录_02conftest.py文件(存放公用fixture)_根目录_03

import pytest

@pytest.fixture(scope="module")
def open_51(login):
name, token = login
print(f"51job的conftest 用户 {name} 打开51job网站==")

conftest.py

某个功能模块下的测试用例:

conftest.py文件(存放公用fixture)_根目录_02conftest.py文件(存放公用fixture)_根目录_03

def test_case2_01(open_51):
print("51job,列出所有职位用例")


def test_case2_02(open_51):
print("51job,找出所有python岗位")

test_case1.py

3.toutiao文件夹

没有__init__.py,只是个普通文件夹,不是包,文件夹不可以有conftest.py文件

conftest.py文件(存放公用fixture)_根目录_02conftest.py文件(存放公用fixture)_根目录_03

def test_case2_01(open_51):
print("51job,列出所有职位用例")


def test_case2_02(open_51):
print("51job,找出所有python岗位")

test_case1.py

4.weibo包

配置一些针对weibo这个网站的测试用例独有的fixture,譬如:打开weibo网站:

conftest.py文件(存放公用fixture)_根目录_02conftest.py文件(存放公用fixture)_根目录_03

import pytest

@pytest.fixture(scope="function")
def open_weibo(login):
name, token = login
print(f"weibo的conftest 用户 {name} 返回微博首页 &&&")

conftest.py

某个功能模块下的测试用例:

conftest.py文件(存放公用fixture)_根目录_02conftest.py文件(存放公用fixture)_根目录_03

class TestWeibo:
def test_case1_01(self, open_weibo):
print("查看微博热搜")

def test_case1_02(self, open_weibo):
print("查看微博范冰冰")

test_case1.py

5.运行run.py,执行该项目所有用例

conftest.py文件(存放公用fixture)_测试用例_18

 

 参考:小菠萝

 

网友评论