首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Pytest:在pytest_addoption钩子中添加互斥组

Pytest是一个Python的测试框架,它提供了丰富的功能和灵活的扩展性,可以帮助开发人员编写高效、可靠的测试代码。在pytest中,可以使用pytest_addoption钩子来添加互斥组。

互斥组是一组选项,其中只能选择一个选项进行设置,而不能同时设置多个选项。在pytest中,可以使用argparser库来定义和解析命令行选项,并使用pytest_addoption钩子将其集成到测试框架中。

下面是一个示例代码,演示了如何在pytest_addoption钩子中添加互斥组:

代码语言:python
代码运行次数:0
复制
# 导入pytest和argparser库
import pytest
import argparse

# 定义互斥组的选项
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument("--option1", action="store_true", help="Option 1")
group.add_argument("--option2", action="store_true", help="Option 2")

# 在pytest_addoption钩子中添加互斥组
def pytest_addoption(parser):
    parser.add_argument("--option1", action="store_true", help="Option 1")
    parser.add_argument("--option2", action="store_true", help="Option 2")

# 在测试函数中使用互斥组的选项
def test_example(request):
    if request.config.getoption("--option1"):
        # 执行Option 1的测试逻辑
        pass
    elif request.config.getoption("--option2"):
        # 执行Option 2的测试逻辑
        pass
    else:
        # 没有选择任何选项时的默认逻辑
        pass

在上述示例代码中,我们首先导入了pytest和argparser库。然后,我们使用argparser库定义了一个互斥组,其中包含了两个选项:--option1和--option2。接下来,在pytest_addoption钩子中,我们使用parser.add_argument()方法将这两个选项添加到pytest的命令行选项中。

最后,在测试函数test_example中,我们使用request.config.getoption()方法来获取用户在命令行中选择的选项,并根据选项的值执行相应的测试逻辑。

需要注意的是,上述示例代码中的互斥组选项是通过命令行参数传递给pytest的。因此,在运行pytest时,可以使用--option1或--option2来选择相应的选项。例如:

代码语言:txt
复制
pytest --option1

这样就会执行Option 1的测试逻辑。

总结起来,pytest_addoption钩子可以用来添加互斥组选项,通过argparser库定义和解析命令行选项,并在测试函数中根据选项的值执行相应的测试逻辑。这样可以帮助开发人员更灵活地组织和执行测试代码。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

pytest文档76 - 命令行神奇的-o参数使用

前言 pytest 命令行 -o 参数的作用是覆盖pytest.ini配置文件的参数,那就意味着ini的参数,也可以命令行中使用了。...其作用是覆盖ini配置的”option=value”,如:-o xfail_strict=True -o cache_dir=cache 使用示例 之前有小伙伴问到生成JUnit报告, pytest.ini...配置文件添加 junit_suite_name 参数可以实现 [pytest] junit_suite_name=yoyo 但是小伙伴想在命令行实现,却没有这个参数,当时给的解决办法是conftest.py...通过钩子函数把命令行参数注册到pytest.ini # conftest.py def pytest_addoption(parser): parser.addoption(..._inicache['junit_suite_name']=name 后来翻阅各种文档发现命令行带上-o参数就能实现,原来pytest早就设计好了 > pytest demo --junit-xml=.

77740

pytest文档70-Hook钩子函数完整API总结​

前言 pytest钩子函数有很多,通过钩子函数的学习可以了解到pytest执行用例的每个阶段做什么事情,也方便后续对pytest二次开发学习。...(内部和setuptools插件),可以使用的钩子 pytest_load_initial_conftests(early_config,parser,args): 命令行选项解析之前实现初始conftest...第二部分:初始化挂钩 初始化钩子需要插件和conftest.py文件 pytest_addoption(parser): 注册argparse样式的选项和ini样式的配置值,这些值测试运行开始时被调用一次...pytest_addhooks(pluginmanager): 插件注册时调用,以允许通过调用来添加新的挂钩 pytest_configure(config): 许插件和conftest文件执行初始配置...pytest_terminal_summary(terminalreporter: TerminalReporter, exitstatus: ExitCode, config: Config) 终端摘要报告添加一个部分

2.9K20
  • pytest文档69-Hook函数之参数化pytest_generate_tests

    前言 pytest 实现参数化有三种方式 pytest.fixture() 使用 fixture 传 params 参数实现参数化 @ pytest.mark.parametrize 允许测试函数或类定义多组参数...,在用例实现参数化 pytest_generate_tests 允许定义自定义参数化方案或扩展。...pytest_generate_tests pytest_generate_tests 测试用例参数化收集前调用此钩子函数,根据测试配置或定义测试函数的类或模块中指定的参数值生成测试用例, 可以使用此钩子实现自定义参数化方案或扩展...为此,可以使用pytest_generate_tests收集测试函数时调用的钩子。...conftest.py文件,其中包含命令行选项和测试函数的参数化: # content of conftest.py def pytest_addoption(parser): parser.addoption

    2.6K40

    浅谈 Python 库的插件系统设计

    插件起作用的方法,既可以调用这个对象的某个函数,也可以插件顶层代码实现,因为导入插件会执行一次import,所有的顶层代码都会执行一次。...Pytest Pytest 也有海量的插件可用,它是基于pluggy框架构建的插件系统,除了那些顶层可用的函数、fixtures,pytest 还预定义了很多钩子插件可以实现这些钩子函数达到修改...pytest 的效果: pytest_addoption(parser 添加命令行选项 pytest_collection_modifyitems(config, items) 修改收集到的测试用例列表...这样就要求 PDM 的基本对象类型,都是可以继承然后替换的。...、修改子命令,add_config() 可以添加、修改配置项,load_plugins() 用来载入所有 entry_ponts 并执行,执行时会把主入口对象当做参数传给插件对象。

    36530

    python自动化切换环境

    第1种使用方式是终端添加--base-url这个命令 如下所示: ?...第2种使用方式是pytest.ini配置文件种去配置base_url,然后自动读取url的数据,这样就不用添加--base-url这个命令行参数了: ? 命令行直接运行pytest 即可。...Conftest.pypytest_addoption这个hooks函数,可以自定义命令行参数,base_url只能对一个url地址进行传递,那么有的项目不仅需要多项目请求的url地址进行不同环境的切换...代码如下: 通过pytest_addoption这个hooks函数,设置了两个命令行参数,一个是--mysql-url,另一个是--project-url,help后面是对这两个命令行的解释,解释说明这两个命令行代表什么含义...通过fixture函数的request参数去读取命令行传递的参数,赋值给一个变量,就可以pytest随便使用。 ?

    1.3K10

    WordPress 如何批量添加、设置和删除一缓存

    WordPress 5.5 版本的时候,就引入了wp_cache_get_multiple()函数,实现一次缓存调用就可以批量获取一缓存。...wp_cache_set_multiple wp_cache_delete_multiple 下面分别简单介绍一下这三个函数: wp_cache_add_multiple( data, group = '', $data: 要添加到缓存的键值对数组...$group: 可选, 缓存的名,默认为空字符串 $expire: 可选,多少秒后过期,单位为秒,默认为0,即永不过期。...这三个函数是需要插件开发者 object-cache.php 中去实现,没有的话,WordPress 6.0 会兼容处理,就是循环调用 wp_cache_add()、wp_cache_set() 和  ...Memcached 没有批量添加的接口, 所以 wp_cache_add_multi() 就没有实现,让 WordPress 使用默认的循环调用 wp_cache_add() 实现即可。

    3.3K20

    pytest文档64-内置 pytestconfig 动态添加和获取 pytest.ini 配置参数

    我们写项目自动化用例的时候,有一些配置参数希望能加到配置里面,如configid, productid,以及测试环境的base_url地址,和账号相关信息。..._ininames.append(name) 动态添加配置信息 前面一篇讲添加命令行参数,可以用 addoption 来添加命令行参数,这里我们是添加 pytest.ini 的配置信息 adddini里面参数说明...是设置帮助文档,方便查阅 # conftest.py # 作者-上海悠悠 QQ交流群:717225969 # blog地址 https://www.cnblogs.com/yoyoketang/ def pytest_addoption...pytest.ini parser.addini('url', type=None, default="http://49.235.92.12:8200/", help='添加 url 访问地址参数...配置 url地址 如果有一天我们的测试环境发生了改变,这时候不需要去改代码,只需 pytest.ini 配置一个环境地址 [pytest] url = https://www.cnblogs.com

    1.5K40

    pytest文档62-内置fixture之request

    前言 request 是 pytest 的内置 fixture , “为请求对象提供对请求测试上下文的访问权,并且fixture被间接参数化的情况下具有可选的“param”属性。”...addfinalizer(finalizer: Callable[], object]) → None[源代码] 添加finalizer/teardown函数,以便在请求的测试上下文中的最后一个测试完成执行后调用...但是,如果您只能在测试设置时决定是否使用另一个fixture,那么您可以使用此函数fixture或测试函数体检索它。... conftest.py 写一个 hook函数, pytest_addoption 的作用是用于获取命令行参数,request.config 用于读取测试的配置数据 # content of conftest.py...# 作者-上海悠悠 QQ交流群:717225969 # blog地址 https://www.cnblogs.com/yoyoketang/ import pytest def pytest_addoption

    1.3K41

    pytest文档10-命令行传参addoption

    前言 命令行参数是根据命令行选项将不同的值传递给测试函数,比如平常在cmd执行”pytest —html=report.html”,这里面的”—html=report.html“就是从命令行传入的参数...对应的参数名称是html,参数值是report.html contetest配置参数 1.首先需要在contetest.py添加命令行选项,命令行传入参数”—cmdopt“, 用例如果需要用到从命令行传入的参数...,就调用cmdopt函数: # content of conftest.py import pytest def pytest_addoption(parser): parser.addoption...(["-s", "test_case1.py"]) cmd打开,输入指令启动,也可以pycharm里面右键执行上面代码 $ pytest -s test_sample.py 运行结果: >pytest...==== 1 failed in 0.05 seconds =========================== 带参数启动 1.如果不带参数执行,那么传默认的default=”type1”,接下来命令行带上参数去执行

    3K30

    Pytest测试框架一键动态切换测试环境实现思路及方案

    大致实现原理如下所示: 用户通过pytest命令行传入参数驱动脚本执行(pytest_addoption用于实现自定义命令行参数); fixture函数get_env用于获取用户输入的命令行参数,传递给...1.实现自定义命令行参数工具 conftest.py定义一个hook函数,实现自定义命令行工具,名为pytest_addoption(固定写法),用来命令行传入不同的环境参数; def pytest_addoption...定义get_env的fixture函数,用来获取用户命令行输入的参数值,传递给fixture.py的各个fixture函数。...2、传统的测试用例设计模式,会把一些实例化放在setup或setup_class,如:jc_resource = JcResource(xxx),但因为fixture函数无法在前后置方法传递的缘故...以下演示命令行执行用例: -v:打印详细执行过程; -s:控制台输出用例的print语句; --env:前面pytest_addoption定义的命令行参数,默认值:test,输入范围choices=

    1.4K30

    pytest hook简介

    pytest除了强大的用例发现、收集、执行和报告输出之外,还提供了丰富的函数hook可以自定义插件或者框架行为,只需项目目录/conftest.py文件实现对应hook名称的函数,即可完成hook函数的注册...默认实现中会调用配置hook和测试运行的主循环 初始化型hook 初始化型hook主要在插件和conftest.py文件调用 pytest_addoption(parser) 注册argparse风格的选项和...注册的值config获取到,而config可以通过很多内部对象的.config属性获取,或者使用pytestconfig夹具来获取 pytest_addhooks(pluginmanager) 插件注册时调用以添加新的...(session, config, items) 用例收集完成之后,可用来添加、删除或者排序收集好的用例 报告型hook Session相关的报告hook pytest_collectstart(collector...那么就可以pytest_runtest_logreport中保存错误信息至全局变量,并在pytest_sessionfinish(测试完成后)将对应的信息保存至数据库即可 最后 通过pytest强大的

    2.2K40

    Python测试框架pytest(18)命令行参数

    Python测试框架pytest(18) 命令行参数 目录 1、parser.addoption()添加参数 1.1、conftest配置参数 1.2、带参数启动 2、--tb 2.1、--tb=auto...1、parser.addoption()添加参数 parser.addoption() 方法用来添加命令行参数 1.1、conftest配置参数 1、conftest.py文件添加命令行选项,自定义命令行传入参数.../usr/bin/env python # -*- coding: utf-8 -*- """ 微信公众号:AllTests软件测试 """ import pytest def pytest_addoption...如果不带参数执行,那么传默认的default="type1",接下来命令行带上参数"--opt=type2"去执行。...如果想查看 fixture 的执行信息,可使用命令行参数 --setup-show,设置执行测试时显示 fixture 的执行过程。 1、创建test_command4.py文件 脚本代码: #!

    70610

    Pytest之命令行执行

    但是随着业务的扩张,就会有很多的集群,每个集群都是需要被测试和验证(后续文章详细的介绍SAAS化集群的容量规划,调度,计算和存储的验证思路),考虑到每个集群都是需要被验证,那么测试代码只有一套,不可能说面对多个集群而有多套代码...如果和Pytest整合起来后,我们会发现,如上的方式执行的时候,总是会提示错误的信息,这是因为Pytest的测试框架,它是有它自己内部的一套机制,我们可以结合它内部的命令行执行和Ci的参数化来进行整合...coding:utf-8 import pytest import argparse def pytest_addoption(parser): '''添加pytest的自定义命令行参数'''...(["-s","-v","test_params.py"]) CI,修改执行的方式,具体如下: ?...这样修改后,可以很完美的把Pytest框架的命令行参数与Ci的参数整合起来,从而得到SAAS化的架构下,对各个上层应用不同账户的验证,来达到校验各个集群的目的。

    1.2K30

    tep支持pytest-xdist分布式执行用例及合并Allure报告

    tep近期更新频率较快,一方面是作者积极投入到tep工具开发;另一方面是我们聚集了20位小伙伴,一起合力打造EasyPytest测试平台,teprunner的FastAPI升级版本,依托于tep,...分布式执行用例 借助于pytest-xdist,命令行执行时添加参数-n auto: pytest -n auto pytest-xdist会自动根据本地机器硬件配置,设置最优并发,并分发用例,分布式执行...测试时先运行main.py,然后case100目录下执行pytest -n auto --tep-reports: 第一次串行,第二次xdist并行: 执行时间从50s一下降到5s,性能提升还是非常的明显...但是有个问题,tep封装了--tep-reports 命令行参数一键生成Allure报告,背后的逻辑是pytest_sessionfinish hook函数里面实现的,分布式执行时,每个xdist的node...判断是主节点master还是子节点 主节点没有workerinput属性 """ return not hasattr(config, 'workerinput') def pytest_addoption

    70130
    领券