pytest命令行传递参数excelpath实现数据驱动

简介: pytest命令行传递参数excelpath实现数据驱动

我们可以在命令行中使用pytest传递自定义参数excelpath,然后在测试脚本中获取excelpath的路径,然后解析成数据集批量执行。


一、代码实现


import pytest
def pytest_addoption(parser):
    parser.addoption("--excelpath", action="store", default=None, help="The Excel path that stores test datas.")
@pytest.fixture
def excelpath(request):
    return request.config.getoption("--excelpath")
def test_get_cases(excelpath):
    print(f'excelpath: {excelpath}')
    # values = parse_excel(excelpath)
    # return values
    return [1, 2, 3]  # demo for values
@pytest.mark.parametrize('case', test_get_cases(excelpath))
def test_runner(case):
    print(case)


二、Demo验证


命令行中运行:

python -m pytest tests/test_cases.py --excelpath=path/to/excel -s


运行结果:

=========================================================================================================================================================== test session starts ===========================================================================================================================================================
platform win32 -- Python 3.9.18, pytest-7.4.0, pluggy-1.0.0
rootdir: D:\BaiduSyncdisk\xyouwen-workspace\ddautotest
plugins: dependency-0.5.1
collecting ... excelpath: <function excelpath at 0x0000011F8261E940>
collected 4 items                                                                                                                                                                                                                                                                                                                           
tests\test_cases.py excelpath: path/to/excel
.1
.2
.3
.
============================================================================================================================================================ warnings summary ============================================================================================================================================================= 
tests/test_cases.py::test_get_cases
  D:\ProgramFiles\anaconda3\envs\ddautotest\lib\site-packages\_pytest\python.py:198: PytestReturnNotNoneWarning: Expected None, but tests/test_cases.py::test_get_cases returned [1, 2, 3], which will be an error in a future version of pytest.  Did you mean to use `assert` instead of `return`?
    warnings.warn(
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
====================================================================================================================================================== 4 passed, 1 warning in 0.02s 


三、最终代码


避免警告提示,可以在代码中添加:

pytestmark = pytest.mark.filterwarnings("ignore::pytest.PytestReturnNotNoneWarning")


完整代码为:

import pytest
pytestmark = pytest.mark.filterwarnings("ignore::pytest.PytestReturnNotNoneWarning")
def pytest_addoption(parser):
    parser.addoption("--excelpath", action="store", default=None, help="The Excel path that stores test datas.")
@pytest.fixture
def excelpath(request):
    return request.config.getoption("--excelpath")
def test_get_cases(excelpath):
    print(f'excelpath: {excelpath}')
    # values = parse_excel(excelpath)
    # return values
    return [1, 2, 3]  # demo for values
@pytest.mark.parametrize('case', test_get_cases(excelpath))
def test_runner(case):
    print(case)
目录
相关文章
|
5月前
|
测试技术 Python
python自动化测试中装饰器@ddt与@data源码深入解析
综上所述,使用 `@ddt`和 `@data`可以大大简化写作测试用例的过程,让我们能专注于测试逻辑的本身,而无需编写重复的测试方法。通过讲解了 `@ddt`和 `@data`源码的关键部分,我们可以更深入地理解其背后的工作原理。
103 1
|
6月前
|
Python
`cmd`模块是Python标准库中的一个模块,它提供了一个简单的框架来创建命令行解释器。
`cmd`模块是Python标准库中的一个模块,它提供了一个简单的框架来创建命令行解释器。
|
8月前
|
存储 开发者 Python
Python中的argparse模块:命令行参数解析的利器
Python中的argparse模块:命令行参数解析的利器
80 2
|
8月前
|
Python
补充python操作excel示例xlwings常用函数
补充python操作excel示例xlwings常用函数
173 0
|
存储 开发工具 开发者
命令行参数解析神器:深入剖析Python中的argparse模块
命令行参数解析神器:深入剖析Python中的argparse模块
|
测试技术
python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(优化版)
python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(优化版)
324 0
python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(优化版)
|
测试技术
pytest conftest.py和fixture的配合使用
pytest conftest.py和fixture的配合使用
|
网络协议 jenkins 测试技术
python接口自动化(二十五)--unittest断言——下(详解)
本篇还是回归到我们最初始的话题,想必大家都忘记了,没关系看这里:传送门 没错最初的话题就是登录,由于博客园的登录机制改变了,本篇以我找到的开源免费的登录API为案例,结合 unittest 框架写 2 个用例。同样我们先来看一下接口文档。
165 0
python接口自动化(二十五)--unittest断言——下(详解)
|
数据管理 测试技术 API
python接口自动化(三十七)-封装与调用--读取excel 数据(详解)
在进行软件接口测试或设计自动化测试框架时,一个不比可避免的过程就是: 参数化,在利用python进行自动化测试开发时,通常会使用excel来做数据管理,利用xlrd、xlwt开源包来读写excel。例如:当我们登录的账号有多个的时候,我们一般用 excel 存放测试数据,本篇文章介绍,python 读取excel 方法,并保存为字典格式。
401 0
python接口自动化(三十七)-封装与调用--读取excel 数据(详解)
|
测试技术 数据库 Python
python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)
大多数的初学者在使用 unittest 框架时候,不清楚用例的执行顺序到底是怎样的。对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行。虽然或许通过代码实现了,也是稀里糊涂的一知半解,这样还好,好歹自己鼓 捣出了,但是时间和效率并不是很高,下次遇到还是老样子。那么本篇通过最简单案例来给给为小伙伴详细讲解、演示一下 unittest 执行顺序。
273 0
python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)