IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Pytest测试框架系列 - pytest 添加自定义命令行参数 -> 正文阅读

[开发测试]Pytest测试框架系列 - pytest 添加自定义命令行参数

前言

我们先来考虑一下如果存在下面场景,我们在不改变代码的情况实现:

  • 一般来说公司存在几套环境,例如回归测试用例,我们需要在不同的环境进行测试,自动化用例有时候也需要支持在不同测试环境运行

我们可能想到:

  • 配置文件里面指定,在不同环境运行之前,进行测试地址修改
  • 在执行脚本命令时,动态带参数

本次我们讲解pytest框架的自定义命令行参数,也就是 在执行脚本命令时,动态带参数
这里需要用到:

  • pytest_addoption 注册参数
  • config.getoption 获取命令行参数

pytest_addoption 和 config.getoption详解

pytest框架本身使用示例:

def pytest_addoption(parser: Parser) -> None:
    parser.addoption(
        "--lsof",
        action="store_true",
        dest="lsof",
        default=False,
        help="run FD checks if lsof is available",
    )
    parser.addoption(
        "--runpytest",
        default="inprocess",
        dest="runpytest",
        choices=("inprocess", "subprocess"),
        help=(
            "run pytest sub runs in tests using an 'inprocess' "
            "or 'subprocess' (python -m main) method"
        ),
    )

parser.addoption() 常用参数说明:

  • name:自定义命令行参数的名字,就配置为:"–foo"格式;
  • action:默认action=“store”,只存储参数的值,可以存储任何类型的值,命令行参数多次使用也只能生效一个,最后一个值覆盖之前的值;
  • default:默认值。
  • choices:可以指定几个值,自定义参数必须在这几个值中选择一个,否则会报错;
  • help:对参数作用的简要说明;

使用示例

一般写在 contest.py文件里面:

# !/usr/bin/python3
# _*_coding:utf-8 _*_
""""
# @Time  :2021/7/26 22:52
# @Author  : king
# @File    :conftest.py
# @Software  :PyCharm
# @blog     :https://blog.csdn.net/u010454117
# @WeChat Official Account: 【测试之路笔记】
"""
import pytest

hosts = {
    "dev": "http://dev.xxxx.com",
    "test": "http://test.xxxx.com",
    "pre": "http://pre.xxxx.com",
    "pro": "http://pro.xxxx.com",
}

def pytest_addoption(parser):
    parser.addoption(
        "--host",
        action="store",
        default="test",
        choices=["dev", "test", "pre", "pro"],
        help="dev:表示开发环境, \
             test:表示测试环境, \
             pre: 表示预发布环境,\
             pro: 表示生产环境,\
             默认test环境"
    )

@pytest.fixture(scope='session')
def get_cmdopts(request):
    if hosts.get(request.config.getoption("--host")):
        return hosts.get(request.config.getoption("--host"))

test_addoptions.py 文件:

# !/usr/bin/python3
# _*_coding:utf-8 _*_
""""
# @Time  :2021/7/26 20:51
# @Author  : king
# @File    :test_addoptions.py
# @Software  :PyCharm
# @blog     :https://blog.csdn.net/u010454117
# @WeChat Official Account: 【测试之路笔记】
"""
import pytest

def test_option(get_cmdopts):
    print(get_cmdopts)

if __name__ == '__main__':
    pytest.main()

输入pytest -s 查看执行结果:
执行结果
输入pytest -s --host=pre 查看执行结果:
执行结果
输入pytest -s --host=demo 查看执行结果:
执行结果
结论:通过pytest_addoption 注册自定义参数和 使用config.getoption获取参数,就可以实现命令行动态获取参数

那别人怎么查看我们自己注册了那些参数呢?

我们可以通过pytest -h 查看自定义的参数:
自定义参数

总结

  • pytest_addoption 注册自定义参数详解
  • 使用config.getoption 获取自定义参数
  • 查看自定义参数列表

以上为内容纯属个人理解,如有不足,欢迎各位大神指正,转载请注明出处!

如果觉得文章不错,欢迎关注微信公众号,微信公众号每天推送相关测试技术文章
个人微信号

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 08:07:20  更:2021-07-28 08:08:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 20:36:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码