微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pytest系列6 - conftest.py的详细讲解

如果你还想从头学起Pytest,可以看看这个系列的文章哦!

https://www.cnblogs.com/poloyy/category/1690628.html

 

什么是conftest.py

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

 

实际开发场景

多个测试用例文件(test_*.py)的所有用例都需要登录功能来作为前置操作,那就不能把登录功能写到某个用例文件中去了

 

如何解决上述场景问题?

conftest.py的出现,就是为了解决上述问题,单独管理一些全局的fixture

 

conftest.py配置fixture注意事项

  • pytest会认读取conftest.py里面的所有fixture
  • conftest.py 文件名称是固定的,不能改动
  • conftest.py只对同一个package下的所有测试用例生效
  • 不同目录可以有自己的conftest.py,一个项目中可以有多个conftest.py
  • 测试用例文件中不需要手动import conftest.py,pytest会自动查找

 

实际项目中的小案例

这是一个目录

 

06conftest目录下

conftest.py代码

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

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

"""
__title__  =
__Time__   = 2020-04-08 21:22
__Author__ = 小菠萝测试笔记
__Blog__   = https://www.cnblogs.com/poloyy/
"""
import pytest

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


@pytest.fixture(autouse=True)
 get_info(login):
    name,token = login
    print(f== 每个用例都调用的外层fixture:打印用户token: {token} ==")
View Code

 

test_1.py代码

同级目录下的第一条测试用例

 test_get_info(login):
    name,1)">***基础用例:获取用户个人信息***)
    用户名:{name},token:{token}")
View Code

 

06_run.py代码

运行06conftest目录下所有测试用例

 pytest

if __name__ == '__main__':
    pytest.main([-s",../06conftest/"])
View Code

 

test_51job目录下

conftest.py代码

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

module open_51(login):
    name,1)">###用户 {name} 打开51job网站###")
View Code

 

test_case1.py代码

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

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


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

 

test_toutiao目录下

test_case1.py代码

包没有__init__.py文件也没有conftest.py文件

 test_no_fixture(login):
    ==没有__init__测试用例,我进入头条了==View Code

 

test_weibo目录下

conftest.py代码

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

function open_weibo(login):
    name,1)">&&& 用户 {name} 返回微博首页 &&&")
View Code

 

test_case1.py代码

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

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

     test_case1_02(self,1)">查看微博范冰冰")
View Code

 

运行06_run.py的结果

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐