蟑螂恶霸的博客 蟑螂恶霸的博客
首页
  • Web自动化
  • 自动化测试框架
  • 接口自动化
  • 测试面试题
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • Vue
  • JavaScript
  • Nginx
  • 自动化测试
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

蟑螂恶霸

一个爱折腾的程序员,什么都想试试!
首页
  • Web自动化
  • 自动化测试框架
  • 接口自动化
  • 测试面试题
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • Vue
  • JavaScript
  • Nginx
  • 自动化测试
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • web自动化

  • 自动化测试框架

  • 接口自动化测试

  • 测试面试题

  • Pytest

    • 快速入门和基础讲解
    • assert断言详细使用
    • setup和teardown的详细使用
    • fixture的详细使用
    • 测试用例执行后的几种状态
    • conftest.py的详细讲解
      • 什么是conftest.py
      • 实际开发场景
      • 如何解决上述场景问题?
      • conftest.py配置fixture注意事项
      • 06conftest目录下
        • conftest.py代码
        • 最顶层的conftest,一般写全局的fixture,在Web UI自动化中,可能会初始化driver
        • test_1.py代码
        • 同级目录下的第一条测试用例
        • 06_run.py代码
        • 运行06conftest目录下所有测试用例
      • test_51job目录下
        • conftest.py代码
        • 配置一些针对51job这个网站的测试用例独有的fixture,譬如:打开51job网站
        • test_case1.py代码
        • 某个功能模块下的测试用例
      • test_toutiao目录下
        • test_case1.py代码
      • test_weibo目录下
        • conftest.py代码
        • 配置一些针对weibo这个网站的测试用例独有的fixture,譬如:打开weibo网站
        • test_case1.py代码
        • 某个功能模块下的测试用例
      • 运行06_run.py的结果
    • skip、skipif跳过用例
    • 使用自定义标记mark
    • 参数化@pytest.mark.parametrize
    • fixture 传参数 request的详细使用
    • 失败重跑插件pytest-rerunfailures的详细使用
    • 测试结果生成HTML报告插件之pytest-html的详细使用
    • 重复执行用例插件之pytest-repeat的详细使用
    • 配置文件pytest.ini的详细使用
    • 多重校验插件之pytest-assume的详细使用
    • 分布式测试插件之pytest-xdist的详细使用
    • pytest-xdist分布式测试的原理和流程
    • 超美测试报告插件之allure-pytest的基础使用
    • 我们需要掌握的allure特性
    • allure的特性,@allure.step()、allure.attach的详细使用
    • allure的特性,@allure.description()、@allure.title()的详细使用
    • allure的特性,@allure.link()、@allure.issue()、@allure.testcase()的详细使用
    • allure 打标记之 @allure.epic()、@allure.feature()、@allure.story() 的详细使用
    • allure 环境准备
    • allure.severity 标记用例级别
    • 清空 allure 历史报告记录
    • allure 命令行参数
    • 参数化 parametrize + @allure.title() 动态生成标题
    • 详解 allure.dynamic 动态生成功能
    • 使用 pytest-xdist 分布式插件,如何保证 scope=session 的 fixture 在多进程运行情况下仍然能只运行一次
  • 自动化测试
  • Pytest
蟑螂恶霸
2022-07-22
目录

conftest.py的详细讲解

# 什么是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

import pytest

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


@pytest.fixture(autouse=True)
def get_info(login):
    name, token = login
    print(f"== 每个用例都调用的外层fixture:打印用户token: {token} ==")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# test_1.py代码

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

def test_get_info(login):
    name, token = login
    print("基础用例:获取用户个人信息")
    print(f"用户名:{name}, token:{token}")
1
2
3
4

# 06_run.py代码

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

import pytest

if __name__ == '__main__':
    pytest.main(["-s", "../06conftest/"])
1
2
3
4

# test_51job目录下

# conftest.py代码

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

import pytest

@pytest.fixture(scope="module")
def open_51(login):
    name, token = login
    print(f"###用户 {name} 打开51job网站###")
1
2
3
4
5
6

# test_case1.py代码

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

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

def test_case2_02(open_51):
    print("51job,找出所有python岗位")
1
2
3
4
5

# test_toutiao目录下

# test_case1.py代码

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

def test_no_fixture(login):
    print("==没有__init__测试用例,我进入头条了==", login)
1
2

# test_weibo目录下

# conftest.py代码

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

import pytest

@pytest.fixture(scope="function")
def open_weibo(login):
    name, token = login
    print(f"&&& 用户 {name} 返回微博首页 &&&")
1
2
3
4
5
6

# test_case1.py代码

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

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

    def test_case1_02(self, open_weibo):
        print("查看微博范冰冰")
1
2
3
4
5
6

# 运行06_run.py的结果

本文转自 https://www.cnblogs.com/poloyy/p/12663601.html (opens new window),如有侵权,请联系删除。

上次更新: 2022/10/15, 15:19:25
测试用例执行后的几种状态
skip、skipif跳过用例

← 测试用例执行后的几种状态 skip、skipif跳过用例→

最近更新
01
实现定时任务数据库配置
06-09
02
SQL Server连接
02-22
03
RSA加密工具类
02-22
更多文章>
Theme by Vdoing | Copyright © 2022-2023 蟑螂恶霸 | Blog
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式