一、Fixture参数之params参数可实现参数化:(可以为list和tuple,或者字典列表,字典元祖等)

实例如下:

import pytest

def read_yaml():
return ['','',''] @pytest.fixture(params=read_yaml())
def get_param(request):
return request.param def test01(get_param):
print('测试用例:'+get_param) if __name__ == '__main__':
pytest.main(['-s','pytest-demo.py'])

注意:

1.此例中test01方法被执行了三次,分别使用的数据为'1','2','3',此结果类似于ddt数据驱动的功能。特别注意:这里的request参数名是固定的,然后request.param的param没有s哦。

2.可以把return request.param改成yield request.param,yield也是返回的意思,它和return的区别在于return返回后后面不能接代码,但是yield返回后,后面还可以接代码。

Fixture其他参数:

1.autouse参数:自动执行,上面的示例已经用到了。

2.ids参数:ids参数是给每一项params参数设置自定义名称用的,意义不大。

3.name参数:相对于把被fixture标记的方法重命名,意义不大。如下图所示案例:

@pytest.fixture(name='mashang')   #name参数给fixture设置名称
def login():
print('登录方法') def testcase(mashang): #使用name参数名来引用,还用login报错
print('测试用例')

二:使用@pytest.mark.parametrize()方法实现参数化

方法详情:

parametrize(argnames,argvalues,indirect=False,ids=None,scope=None)

常用参数:

argnames:参数名

argnames:参数值(可以为list和tuple,或者字典列表,字典元祖等),参数值有N个,用例就会执行N次。

(1)使用方式一

import pytest

lis = [{'name':'zhangsan'},{'age':''},{'sex','男'}]
@pytest.mark.parametrize('caseinfo',lis)
def test01(caseinfo):
print(caseinfo) if __name__ == '__main__':
pytest.main(['-s','pytest-demo.py'])

(2)使用方式二类似于@unpack解包功能实现参数化

import pytest

lis = [('admin',''),('admin1','')]
@pytest.mark.parametrize('username,password',lis)
def test01(username,password):
print(username,password) if __name__ == '__main__':
pytest.main(['-s','pytest-demo.py'])

如果你此文你也有同感,如果你觉得此文对你有帮助,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入:

软件测试技术群:695458161,群里发放的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。

作者:来自公众号:软测之家
出处:https://www.cnblogs.com/csmashang/p/12603837.html
欢迎转载,但未经作者同意请保留此段声明,并在文章页面明显位置给出原文链接。

【Pytest04】全网最全最新的Pytest框架fixture应用篇(2)的更多相关文章

  1. 【Pytest03】全网最全最新的Pytest框架fixture应用篇(1)

    fixtrue修饰器标记的方法通常用于在其他函数.模块.类或者整个工程调用时会优先执行,通常会被用于完成预置处理和重复操作.例如:登录,执行SQL等操作. 完整方法如下:fixture(scope=' ...

  2. 【Pytest02】全网最全最新的Pytest框架快速进阶篇(pytest前置和后置以及忽略测试用例)

    一.Pytest的前置和后置方法 1.Pytest可以集成unittest实现前置和后置 import unittest import pytest class TestCase(unittest.T ...

  3. 【Pytest01】全网最全最新的Pytest框架快速入门

    一.Pytest简介pytest是一个非常成熟的全功能的Python测试框架,主要有一下几个特点:1.简单灵活,容易上手,支持参数化2.能够支持简单的单元测试和复杂的功能测试,还可以用来做seleni ...

  4. 【Pytest05】全网最全最新的Pytest框架之用例分组执行

    一.Fixture用例分组运行常用于冒烟测试,分模块运行等 pytest.ini配置文件中增加分组参数markers来实现用例分组,如: markers = g1:组一 smoke:冒烟测试 pyte ...

  5. (zhuan) 深度学习全网最全学习资料汇总之模型介绍篇

    This blog from : http://weibo.com/ttarticle/p/show?id=2309351000224077630868614681&u=5070353058& ...

  6. pytest框架: fixture之conftest.py

    原文地址:https://blog.csdn.net/BearStarX/article/details/101000516 一.fixture优势1.fixture相对于setup和teardown ...

  7. pytest框架fixture的使用

    fixture可以当做参数传入 定义fixture跟定义普通函数差不多,唯一区别就是在函数上加个装饰器@pytest.fixture(),fixture命名不要以test开头,跟用例区分开.fixtu ...

  8. 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装爬虫框架Scrapy(离线方式和在线方式)(图文详解)

    不多说,直接上干货! 参考博客 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装OpenCV(离线方式和在线方式)(图文详解) 第一步:首先,提示升级下pip 第二步 ...

  9. 全网最全ASP.NET MVC 教程汇总

    全网最全ASP.NET MVC 教程汇总 MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MV ...

随机推荐

  1. JDBC大数据的采取

    ## JDBC的大类型数据的存取 ## # 基本概念: |-- 大文本类型数据和大二进制数据: 主要思想用于将大型的二进制数据(字节) 或是大型的文本数据(字符)从磁盘文件中读取 到数据库中,或是从数 ...

  2. Fetch API与POST请求那些事

    简述 相信不少前端开发童鞋与后端联调接口时,都会碰到前端明明已经传了参数,后端童鞋却说没有收到,尤其是post请求,遇到的非常多.本文以node.js作为服务端语言,借用express框架,简要分析客 ...

  3. 纯JS实现KeyboardNav(学习笔记)一

    纯JS实现KeyboardNav(学习笔记)一 这篇博客只是自己的学习笔记,供日后复习所用,没有经过精心排版,也没有按逻辑编写 GitHub项目源码 预览地址 最终效果 KeyboardNav使用指南 ...

  4. HTTP协议详解(深入理解)

    版权声明:本文为CSDN博主「有抱负的小狮子」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/weixin_ ...

  5. 利用pandas选取某个属性符合指定条件的所有行

    最近遇到利用pandas选取指定行的需求,经常忘记,在此做下记录 选取某个属性等于特定值的所有行记录 df[(df[‘column_name’] == target_value)] 注:等于用 '== ...

  6. C++ const用法,看这一篇就够了!

    本文主要介绍const修饰符在C++中的主要用法,下面会从两个方面进行介绍:类定义中使用const.非类定义中使用const 1. 非类定义中使用const 非类定义中使用const是指:在除了类定义 ...

  7. 【从零单排HBase 01】从一无所知到5分钟快速了解HBase

    最近公司正好准备投入HBase,因此做了一些基础学习准备,所以先暂时停止MySQL的更新,把HBase的学习心得跟大家分享一下,接下来一段时间都会发布HBase相关内容. 在学的过程中,发现跟MySQ ...

  8. Linux基本操作及常用指令

    今天复习了下Linux的基本操作及常用指令,上学期大数据云计算课一直也在用linux系统还是比较熟悉的,并在centos6.7虚拟机上部署了前几天做的web项目,了解了Nginx的反向代理与负载均衡, ...

  9. 18 JpaRepository和JpaSpecificationExecutor

    继承JpaRepository后的方法列表 JpaRepository findAll() List<T> findAll(Sort) List<T> findAll(Iter ...

  10. 数据结构之HashMap

    前言 在我们开发中,HashMap是我们非常常用的数据结构,接下来我将进一步去了解HashMap的原理.结构. 1.HashMap的实现原理 HashMap底层是基于Hash表(也称“散列”)的数据结 ...