首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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接口自动化项目实战(一)
【Pytest篇】装饰器@pytest.mark.parametrize多样参数化(二)
上一篇:Python Pytest装饰器@pytest.mark.parametrize详解
王大力测试进阶之路
2019/11/06
1.8K0
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
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文档9-参数化parametrize
这将运行测试,参数设置为x=0/y=2,x=1/y=2,x=0/y=3,x=1/y=3组合参数。
上海-悠悠
2018/08/17
9190
Pytest系列(9) - 参数化@pytest.mark.parametrize
https://www.cnblogs.com/poloyy/category/1690628.html
小菠萝测试笔记
2020/06/09
1.3K0
Pytest系列(9) - 参数化@pytest.mark.parametrize
Python测试框架pytest(17)参数化parametrize
@pytest.mark.parametrize 允许在测试函数或类中定义多组参数和 fixtures。
wangmcn
2022/07/26
7990
Python测试框架pytest(17)参数化parametrize
pytest数据驱动-pytest.mark.parametrize
在自动化测试中很重要的一个环节就是处理测试数据,在测试框架中,测试数据与功能函数分离,单独存储,运行自动化测试时,框架会读取数据源模块中的数据,把数据作为参数传递到功能函数中,由于测试用例一般覆盖多条不同输入,根据不同的前置条件,选取多条数据执行多次功能函数,以减少重复代码;不同输入条件之间的测试结果互相之间不受影响,来实现数据驱动。
用户5521279
2021/01/12
2.4K0
pytest数据驱动-pytest.mark.parametrize
pytest参数化:@pytest.mark.parametrize
内置的pytest.mark.parametrize装饰器可以用来对测试函数进行参数化处理。下面是一个典型的范 例,检查特定的输入所期望的输出是否匹配: test_expectation.py
流柯
2023/02/17
4910
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
6340
【Python系列】pytest自动化测试框架
为了更灵活的设计自动化测试用例,可以将测试用例写到excel或者json,再进行读取。
用户9913368
2022/08/13
8810
【Python系列】pytest自动化测试框架
Pytest学习笔记3——参数化
  在讲pytest与unittest的区别文章中,我们知道其中一个区别就是参数化,unittest框架使用的第三方库ddt来参数化的,而pytest框架就直接使用装饰器@pytest.mark.parametrize来对测试用例进行传参。这个是针对测试方法来参数化,还有一种是针对前置处理函数来传参。但往往这两种是可以结合使用。
全栈测试开发日记
2023/02/02
7150
Pytest学习笔记3——参数化
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 自动化框架的用例依赖实操
Python Pytest数据驱动测试DDT
数据驱动测试是自动化测试非常重要的原则。一般进行接口测试时,一般会考虑正向、逆向等多种组合case,而这些case除了传参和预期不同外,其实并没什么区别。这个时候就可以利用数据参数化原则来管理测试数据,提高代码复用率。本文介绍两种常用的数据参数化方法。
互联网金融打杂
2022/08/01
1.1K0
Python Pytest数据驱动测试DDT
测试之路 pytest接口自动化框架-插件补充及pytest装饰器扩展
上期内容主要围绕pytest配置文件进行阐述,其中包括命令行参数、失败重试、生成html版本的测试报告、分组以及文件路径设置、运行顺序等。本期就上期内容进行一点补充。
歪小王
2022/12/12
6580
测试之路 pytest接口自动化框架-插件补充及pytest装饰器扩展
Python测试框架pytest(07)fixture - 参数化params、和parametrize结合、ids
@pytest.mark.parametrize添加indirect=True参数是为了把login当成一个函数去执行,而不是一个参数,并且将data当做参数传入函数。
wangmcn
2022/07/26
5750
Python测试框架pytest(07)fixture - 参数化params、和parametrize结合、ids
Pytest@pytest.mark.parametrize一键生成接口正交试验用例
我们在做接口测试时,有时会遇到涉及用例特别多的时候,每个用例都去手动调一遍,很费时费力,也是不现实的,这篇文章我们就解决下这种费时费力的情况.
王大力测试进阶之路
2019/11/09
7490
Pytest fixture之request传参
Pytest中我们经常会用到数据参数化,我们来介绍下装饰器@pytest.fixture()配合request传参的使用
王大力测试进阶之路
2019/11/28
9050
Pytest 系列(28)- 参数化 parametrize + @allure.title() 动态生成标题
https://www.cnblogs.com/poloyy/category/1690628.html
小菠萝测试笔记
2020/10/30
1.4K0
Pytest 系列(28)- 参数化 parametrize + @allure.title() 动态生成标题
推荐阅读
相关推荐
Pytest+Allure+Jenkins接口自动化项目实战(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档