首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Pytest装饰器@pytest.mark.parametrize数据驱动(三)​

Pytest装饰器@pytest.mark.parametrize数据驱动(三)​

作者头像
王大力测试进阶之路
发布于 2019-11-06 02:24:43
发布于 2019-11-06 02:24:43
2K00
代码可运行
举报
文章被收录于专栏:橙子探索测试橙子探索测试
运行总次数:0
代码可运行

Python Pytest装饰器@pytest.mark.parametrize详解

【Pytest篇】装饰器@pytest.mark.parametrize多样参数化(二)

一、测试用例用excel管理,存放地址:C:\Users\wangli\PycharmProjects\Test\test\files\apiCase.xls

二、代码实现如下:

1、封装读取excel用例数据

2、Pytest装饰器@pytest.mark.parametrize('参数名',list)实现登录模块2条测试用例数据驱动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 
 
import pytest,xlrd,os,requests,json
 
#获取excel用例数据
def get_case_data():
    case_path = os.path.join(os.path.dirname(__file__), r'files\apiCase.xls')
    book = xlrd.open_workbook(case_path)
    sheet = book.sheet_by_name('sheet1名字')
    case = []
    for i in range(0, sheet.nrows):
        if sheet.row_values(i)[0] == 'C端登录' and sheet.row_values(i)[3]=='YES':
            case.append(sheet.row_values(i))
    return case
 
class Test(object):
 
    def setup_class(self):
        pass
 
    def teardown_class(self):
        pass
 
    #调用获取测试用例数据
    case_data=get_case_data()
    #使用装饰器参数化用例数据
    @pytest.mark.parametrize('Function,TestCase,Type,Run,URL,Headers,Parameter,SQL1,SQL2,SQL3,AssertType,Expect1,Expect2,Expect3', case_data)
    def test_login1(self,Function,TestCase,Type,Run,URL,Headers,Parameter,SQL1,SQL2,SQL3,AssertType,Expect1,Expect2,Expect3):
        r=requests.post(url=URL,headers=eval(Headers),json=eval(Parameter))
        response=r.json()
        print(response)
        assert eval(Expect1)['code']==response['code']
        assert eval(Expect1)['msg'] == response['msg']
 
 
if __name__=="__main__":
    pytest.main(["-s","test02.py"])
 
 
"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test02.py
============================= test session starts =============================
platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
rootdir: C:\Users\wangli\PycharmProjects\Test\test
plugins: allure-pytest-2.8.5, html-1.22.0, metadata-1.8.0
collected 2 items
 
test02.py {'msg': '成功', 'code': 0, 'data': {'token': 'bearereyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9tZW1iZXItYXBpLnN0Mi50ZXN0LmxhbnhpbmthLmNvbVwvMi4wXC91c2Vyc1wvbG9naW4iLCJpYXQiOjE1NzI3NTE4MDUsImV4cCI6MTU3NDA0NzgwNSwibmJmIjoxNTcyNzUxODA1LCJqdGkiOiJpS2ZKZGdBam0xQWoyRmc1Iiwic3ViIjo1ODQ5MDIsInBydiI6IjNhN2IwNmU5NTBkMDhlMjMzMjkyMjdjN2E2YTUyMzQyYWJiNGYxOWIiLCJidXNpbmVzc190eXBlIjoiNiJ9.1bYj4VslhNMU3yjBtxccCG6fAWNwH8jhAacC6cl-f_A'}}
.{'msg': '验证码错误', 'code': 220002, 'data': {}}
.
 
============================== 2 passed in 0.75s ==============================
 
Process finished with exit code 0

通过以上实验,我们可以看出如果测试模块有100条测试用例,同样用以上代码可以实现测试并断言出结果,是不是很简单呢。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 橙子探索测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Pytest+Allure+Jenkins接口自动化项目实战(一)
经过一周多时间,基于python+pytest+excel+allure框架的接口自动化测试初版已基本实现,包括基本配置读取、用例读取、用例执行、sql读取执行、前置数据准备、后置数据清理以及测试报告生成等,环境独立运行、项目独立运行、用例独立运行、jenkins集成、邮件发送暂未实现,再后期版本会再次推出,现在把整个框架设计思路和想法分享给大家来参考和借鉴。希望大家也能提供更好的思路和方法帮助我进行优化改进。整个过程中遇到的问题清参考Python自动化测试疑问及解决方案(一)Python自动化测试|如何解决前置模块及数据依赖(二)
王大力测试进阶之路
2020/02/19
3.4K0
Pytest+Allure+Jenkins接口自动化项目实战(一)
Python Pytest装饰器@pytest.mark.parametrize详解
Pytest中装饰器@pytest.mark.parametrize('参数名',list)可以实现测试用例参数化,类似DDT 如:@pytest.mark.parametrize('请求方式,接口地址,传参,预期结果',[('get','www.baidu.com','{"page":1}','{"code":0,"msg":"成功"})',('post','www.baidu.com','{"page":2}','{"code":0,"msg":"成功"}')])
王大力测试进阶之路
2019/10/25
8.2K0
Pytest系列(9) - 参数化@pytest.mark.parametrize
https://www.cnblogs.com/poloyy/category/1690628.html
小菠萝测试笔记
2020/06/09
1.3K0
Pytest系列(9) - 参数化@pytest.mark.parametrize
【Pytest篇】装饰器@pytest.mark.parametrize多样参数化(二)
上一篇:Python Pytest装饰器@pytest.mark.parametrize详解
王大力测试进阶之路
2019/11/06
1.8K0
Pytest@pytest.mark.parametrize一键生成接口正交试验用例
我们在做接口测试时,有时会遇到涉及用例特别多的时候,每个用例都去手动调一遍,很费时费力,也是不现实的,这篇文章我们就解决下这种费时费力的情况.
王大力测试进阶之路
2019/11/09
7410
pytest数据驱动-pytest.mark.parametrize
在自动化测试中很重要的一个环节就是处理测试数据,在测试框架中,测试数据与功能函数分离,单独存储,运行自动化测试时,框架会读取数据源模块中的数据,把数据作为参数传递到功能函数中,由于测试用例一般覆盖多条不同输入,根据不同的前置条件,选取多条数据执行多次功能函数,以减少重复代码;不同输入条件之间的测试结果互相之间不受影响,来实现数据驱动。
用户5521279
2021/01/12
2.3K0
pytest数据驱动-pytest.mark.parametrize
Python测试框架pytest(17)参数化parametrize
@pytest.mark.parametrize 允许在测试函数或类中定义多组参数和 fixtures。
wangmcn
2022/07/26
7720
Python测试框架pytest(17)参数化parametrize
Python+Unittest参数化之parameterized数据驱动
Unittest第三方库parameterized类似Python数据驱动模块DDT、Pytest@pytest.mark.parametrize【Pytest篇】装饰器@pytest.mark.parametrize多样参数化(二)Pytest装饰器@pytest.mark.parametrize数据驱动(三)可以实现参数化用户数据驱动,避免写多个方法(冗余)
王大力测试进阶之路
2019/11/28
2.2K0
pytest数据驱动及conftest文件及装饰器使用
一:数据驱动 file_operate.py文件 # coding=utf-8 """ @Project :pachong-master @File :file_operate.py @Author :gaojs @Date :2022/7/1 23:00 @Blogs : https://www.gaojs.com.cn """ import openpyxl as xl import yaml def read_excel(filepat
懿曲折扇情
2022/08/24
6180
pytest参数化:@pytest.mark.parametrize
内置的pytest.mark.parametrize装饰器可以用来对测试函数进行参数化处理。下面是一个典型的范 例,检查特定的输入所期望的输出是否匹配: test_expectation.py
流柯
2023/02/17
4690
Pytest实战
Pytest测试框架是动态语言Python专用的测试框架,使用起来非常的简单,这主要得易于它的设计,Pytest测试框架具备强大的功能,丰富的第三方插件,以及可扩展性好,可以很好的和unittest测试框架能够结合起来在项目中使用。本文章主要介绍Pytest测试框架中参数化的详细信息。
无涯WuYa
2020/10/27
1.7K0
Pytest实战
Python + Pytest 自动化框架的用例依赖实操
今日分享主题:Python + Pytest 自动化框架中测试用例依赖的探索与实践,今天分享的内容以“依赖别名+scope=’package’”进行演示。
Wu_Candy
2022/07/04
1.3K0
Python + Pytest 自动化框架的用例依赖实操
pytest文档67-在 pytest.mark.parametrize 中使用 fixture
测试用例参数化的时候,使用 pytest.mark.parametrize 参数化传测试数据,如果我们想引用前面 不同fixture 返回的数据当测试用例的入参,目前没好的解决办法。 可以用fixture 参数化 prams 来间接解决这个问题
上海-悠悠
2020/12/17
1.6K0
Pytest fixture之request传参
Pytest中我们经常会用到数据参数化,我们来介绍下装饰器@pytest.fixture()配合request传参的使用
王大力测试进阶之路
2019/11/28
8940
pytest parametrize fixture_参数化查询
当某个接口中的一个字段,里面规定的范围为1-5,你5个数字都要单独写一条测试用例,就太麻烦了,这个时候可以使用pytest.mark.parametrize装饰器可以实现测试用例参数化。
全栈程序员站长
2022/09/16
4710
pytest文档9-参数化parametrize
这将运行测试,参数设置为x=0/y=2,x=1/y=2,x=0/y=3,x=1/y=3组合参数。
上海-悠悠
2018/08/17
9120
Python测试框架pytest(07)fixture - 参数化params、和parametrize结合、ids
@pytest.mark.parametrize添加indirect=True参数是为了把login当成一个函数去执行,而不是一个参数,并且将data当做参数传入函数。
wangmcn
2022/07/26
5660
Python测试框架pytest(07)fixture - 参数化params、和parametrize结合、ids
数据驱动测试-从方法探研到最佳实践
Tech 导读 在自动化测试实践中,测试数据是制造测试场景的必要条件,本文主要讲述了在沟通自动化框架如何分层,数据如何存储,以及基于单元测试pytest下如何执行。并通过实践案例分享,提供数据驱动测试的具体落地方案。
京东技术
2023/01/05
9430
数据驱动测试-从方法探研到最佳实践
软件测试/测试开发/全日制|Pytest参数化神器,pytest.mark.parametrize()使用
当我们要使用pytest输入多个数据对一个功能进行测试时,如果写多个测试用例的话,那就完全体现不出通过代码来执行测试的优势了,这个时候,就轮到pytest的参数化功能闪亮登场了。所谓参数化,就是就是把测试过程中的数据提取出来,通过参数传递不同的数据来驱动用例运行。其实也就是数据驱动的概念。本文就给大家介绍一下pytest的参数化和数据驱动。
霍格沃兹测试开发Muller老师
2024/01/11
2010
软件测试/测试开发/全日制|Pytest参数化神器,pytest.mark.parametrize()使用
pytest文档74-参数化parametrize加marks标记(pytest.param)
pytest 使用 parametrize 参数化的时候,有多组测试数据,需要对其中的一些测试数据加标记跳过,可以用pytest.param实现。
上海-悠悠
2021/01/18
8170
pytest文档74-参数化parametrize加marks标记(pytest.param)
推荐阅读
相关推荐
Pytest+Allure+Jenkins接口自动化项目实战(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档