插件的加载方式

  • 外部插件: pip install 安装的插件
  • 本地插件: pytest 自动模块发现机制(conftest.py存放)
  • 内置插件: 代码内部的_pytest目录加载

什么是hook

就是钩子函数

Pytest 有哪些hook函数

pytest 编写自己的插件--添加命令行参数

# 添加一个命令行参数
def pytest_addoption(parser):
mygroup = parser.getgroup("hogwarts") #group 将下面所有的 option都展示在这个group下。
mygroup.addoption("--env", #注册一个命令行选项
default='test', # 参数的默认值
dest='env', # 存储的变量
help='set your run env' # 帮助提示 参数的描述信息
)

demo / 新建一个文件夹

然后新建一个文件conftest.py

from typing import List
import pytest
# import yaml def pytest_collection_modifyitems(session, config, items: List):
for item in items:
print(item) # 添加一个命令行参数
def pytest_addoption(parser):
mygroup = parser.getgroup("hogwarts") # group 将下面所有的 option都展示在这个group下。
mygroup.addoption("--env", # 注册一个命令行选项
default='test', # 参数的默认值
dest='env', # 存储的变量
help='set your run env' # 帮助提示 参数的描述信息
) @pytest.fixture(scope='session')
def cmdoption(request):
env = request.config.getoption("--env", default='test')
# return env
# print(env, '=====')
if env == 'test':
print("test 环境")
datapath = "datas/test/datas.yml"
elif env == 'dev':
print("开发 环境")
datapath = "datas/dev/datas.yml"
return {'host': '127.0.0.1', 'port': '200'}
# with open(datapath) as f:
# datas = yaml.safe_load(f)
# print(datas)
# return env, datas

新建一个文件 test_mm.py

import pytest

@pytest.mark.parametrize("name", ['ha', '23'])
def test_mm(name):
print(name) def test_login():
print('login') def test_login_fail():
print('login')
assert False def test_search():
print('search') def test_env(cmdoption):
print('112')
print(cmdoption)

执行脚本

pytest -s -v --env dev .\test_mm.py::test_env

dev 就会作为参数 传到 cmdoption 中,cmdoption 会处理,这样就可以添加进命令行执行

pytest插件开发的更多相关文章

  1. pytest文档82 - 用例收集钩子 pytest_collect_file 的使用

    前言 pytest 提供了一个收集用例的钩子,在用例收集阶段,默认会查找test_*.py 文件或者 *_test.py文件. 如果我们想运行一个非python的文件,比如用yaml 文件写用例,那么 ...

  2. pytest文档55-plugins插件开发

    前言 前面一篇已经学会了使用hook函数改变pytest运行的结果,代码写在conftest.py文件,实际上就是本地的插件了. 当有一天你公司的小伙伴觉得你写的还不错,或者更多的小伙伴想要你这个功能 ...

  3. python测试框架-pytest

    一.pytest 介绍.运行.参数化和数据驱动.Fixture pytest安装与介绍 官网 : pip install -U pytest 查看版本号:pytest --version 为何选择py ...

  4. Pytest进阶使用

    fixture 特点: 命令灵活:对于setup,teardown可以省略 数据共享:在conftest.py配置里写方法可以实现数据共享,不需要import导入,可以跨文件共享 scope的层次及神 ...

  5. JavaScript学习笔记(四)——jQuery插件开发与发布

    jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...

  6. jira的插件开发流程实践

    怎么开头呢,由于自己比较懒,博客一直不怎么弄,以后克己一点,多传点自己遇到的问题和经历上来,供自己以后记忆,也供需要的小伙伴少走点弯路吧 最近公司项目需要竞标一个运维项目,甲方给予了既定的几种比较常用 ...

  7. Vue插件开发入门

    相对组件来说,Vue 的插件开发受到的关注要少一点.但是插件的功能是十分强大的,能够完成许多 Vue 框架本身不具备的功能. 大家一般习惯直接调用现成的插件,比如官方推荐的 vue-router.vu ...

  8. 【原创】记一次Project插件开发

    一.开发背景 最近在使用微软的Office Project 2010 进行项目管理,看到排的满满的计划任务,一个个地被执行完毕,还是很有成就感的.其实,不光是在工作中可以使用Project进行项目进度 ...

  9. JavaScript学习总结(四)——jQuery插件开发与发布

    jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...

  10. [Tool] Open Live Writer插件开发

    一 前言 Windows Live Writer(简称 WLW)开源之后变成 Open Live Writer(简称 OLW),原先 WLW 的插件在 OLW 下都不能用了,原因很简单,WLW 插件开 ...

随机推荐

  1. C++ sort排序

    sort(begin, end, cmp),其中begin为指向待sort()的数组的第一个元素的指针,end为指向待sort()的数组的最后一个元素的下一个位置的指针,cmp参数为排序准则,如果没有 ...

  2. OSPF之Router id冲突

  3. gerrit部署使用

    前言 gerrit是基于git的工具,code review功能是开发中很方便,此外它可以配合Jenkins进行自动化的编译工作.今天给大家分享一下gerrit在ubuntu的安装使用 作者:良知犹存 ...

  4. mybatis-plus 开发环境在控制台打印日志

    参考博客:https://blog.csdn.net/qq_32929057/article/details/109291919 # 注意在生产环境注释掉 mubatis-plus: configur ...

  5. JVM——锁

    对象头[每个对象都具有对象头] Mark:对象头的标记(32位),描述对象的 hash.锁信息.垃圾回收标记.年龄:内容包括:①.指向锁记录的指针:②.指向 monitor 的指针:③.GC 标记:④ ...

  6. 关于VUE3的疑问。

    1.响应式数据的声明 中 ref 与 reactive 有什么区别? 答:参考答案 .个人理解:ref最好用来定义基本数据类型,使用时要用.value :reactive最好用来定义引用数据类型.re ...

  7. 这年头,谁的好友列表还没有躺一个ChatGPT啊?

    你要是说这个,我可不困了 大家好,我最近开始使用一款非常有趣的AI机器人,它叫做ChatGPT.ChatGPT是一款独特的聊天机器人,它可以进行智能对话,回答你的问题,还可以学习你的语言习惯,使得对话 ...

  8. nginx+vite 项目打包及部署到服务器二级路由

    项目打包及部署到服务器二级路由 例如:我希望将打包的项目部署到 http://localhost:8088/web/ 上 一. 项目配置及打包 项目部署到服务器二级路由需要配置基础路径base,即需要 ...

  9. Android Activity的事件分发机制-源码解析

    查看Activity的dispatchTouchEvent方法: public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getActio ...

  10. python:生成半年内的巡检日报execl

    问题描述:使用脚本来生成半年内的数据,数据内容大概为每天的数据库巡检日报,临时抱佛脚.数据不可能是真实的,都是随机生成的,想要使用真实的数据后面直连操作系统或者数据库.后期可以慢慢实现自动化生成每天的 ...