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

网友投稿 340 2022-09-01


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

一、conftest.py基础认识

1.什么是

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

2.实际用途

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

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

3.存放位置

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

4.注意事项

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

二、实际项目举例

1.项目根目录

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

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

run.py

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

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

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

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

test_case1.py

2.51job包

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

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

conftest.py

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

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文件

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网站:

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

conftest.py

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

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

test_case1.py

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

参考:小菠萝


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:pipenv graph 执行报错 IndexError: list index out of range pipenv安装模块出错
下一篇:关于java中多个JDK和切换版本介绍
相关文章

 发表评论

暂时没有评论,来抢沙发吧~