知识点:

  • 利用fixture共享数据
  • conftest.py共享fixture
  • 使用多个fixture
  • fixture作用范围
  • usefixture
  • 重命名

1. 利用fixture共享数据

test_data中包含了一个fixture名为data,pytest会优先搜索fixture,返回data值

pytest/ch3/test_one.py

import pytest

"""
fixture :
@pytest.fixture
声明了一个fixture,如果测试函数中用到fixture名,那么pytest会检测到,并且再执行测试用例前,先执行fixture
""" @pytest.fixture()
def data():
return 3 def test_data(data):
assert data == 4

2. conftest.py

  针对fixture,可以单独放在一个文件里,如果你希望测试文件共享fixture, 那么在你当前的目录下创建conftest.py文件,将所有的fixture放进去,注意如果你只想作用于某一个文件夹,那么在那个文件夹创建contest.py

pytest/ch3/conftest.py

import pytest
import requests """
如果想多个测试用例共享fixture,可以单独建立一个conftest.py 文件,可以看成提供测试用例使用的一个fixture仓库
""" @pytest.fixture()
def login():
url = 'http://api.shoumilive.com:83/api/p/login/login/pwd'
data = {"phone": "18860910", "pwd": "123456"}
res = requests.post(url, data)
return res.text

pytest/ch3/test_conftest.py

import json

import pytest

"""
通过conftest 建立公共仓库,testcase获取公共仓库
"""
@pytest.mark.login
def test_conftest(login):
data = json.loads(login)
print(data['code'])
assert data['code'] == '200'

if __name__ == '__main__':
pytest.main(["--setup-show", "-m", "login", "-s", "-v"])

3. 使用多个fixture

pytest/ch3/conftest.py

@pytest.fixture()
def one():
return 1 @pytest.fixture()
def two():
return 2

pytest/ch3/test_muti.py

def test_muti(one, two):
assert one == two

4. fixture 作用范围

  用scope来指定作用范围, 作用范围有固定的待选值,fucntion, class, module, session(默认为function)

5. usefixture

  指定fixture ,使用@pytest.mark.usefixtures('')标记测试函数,或者测试类

6. 重命名

  如果一个测试命名过长的话,我们可以使用name参数,给她重名了,我们使用fixture的时候,只需要传入name值即可

@pytest.fixture(name='maoyan')
def test_maoyan_page_001():
return 2

  

github: https://github.com/wangxiao9/pytest.git

【PYTEST】第四章Fixture的更多相关文章

  1. Pytest学习(四) - fixture的使用

    前言 写这篇文章,整体还是比较坎坷的,我发现有知识断层,理解再整理写出来,还真的有些难. 作为java党硬磕Python,虽然对我而言是常事了(因为我比较爱折腾,哈哈),但这并不能影响我的热情. 执念 ...

  2. Pytest(3)fixture的使用

    fixture的优势 Pytest的fixture相对于传统的xUnit的setup/teardown函数做了显著的改进: 命名方式灵活,不局限于 setup 和teardown 这几个命名 conf ...

  3. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  4. 《Linux内核设计与实现》读书笔记 第四章 进程调度

    第四章进程调度 进程调度程序可看做在可运行太进程之间分配有限的处理器时间资源的内核子系统.调度程序是多任务操作系统的基础.通过调度程序的合理调度,系统资源才能最大限度地发挥作用,多进程才会有并发执行的 ...

  5. 《Entity Framework 6 Recipes》中文翻译系列 (20) -----第四章 ASP.NET MVC中使用实体框架之在MVC中构建一个CRUD示例

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第四章  ASP.NET MVC中使用实体框架 ASP.NET是一个免费的Web框架 ...

  6. 《Entity Framework 6 Recipes》中文翻译系列 (21) -----第四章 ASP.NET MVC中使用实体框架之在页面中创建查询和使用ASP.NET URL路由过虑

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 4.2. 构建一个搜索查询 搜索数据是几乎所有应用的一个基本功能.它一般是动态的,因 ...

  7. 精通Web Analytics 2.0 (6) 第四章:点击流分析的奇妙世界:实际的解决方案

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第四章:点击流分析的奇妙世界:实际的解决方案 到开始实际工作的时候了.哦耶! 在本章中,您将了解到一些最重要的网络分析报告,我将 ...

  8. Java语言程序设计(基础篇) 第四章 数学函数、字符和字符串

    第四章 数学函数.字符和字符串 4.2 常用数学函数 方法分三类:三角函数方法(trigonometric method).指数函数方法(exponent method)和服务方法(service m ...

  9. 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算

    http://www.cnblogs.com/batteryhp/p/5000104.html 第四章 Numpy基础:数组和矢量计算 第一部分:numpy的ndarray:一种多维数组对象 实话说, ...

随机推荐

  1. spring cloud gateway网关路由分配

    1, 基于父工程,新建一个模块 2,pom文件添加依赖 <dependencies> <dependency> <groupId>org.springframewo ...

  2. ERROR: No matching distribution found for cv2

    ImportError: No module named cv2和No matching distribution found for cv2的问题 原因 这个是由于没有导入opencv库导致的 解决 ...

  3. Jetbrains全系列产品 2020最新激活方法 (即时更新)

    即时更新:http://idea.itmatu.com/key Jetbrains全系列产品 2020最新激活方法 JMFL04QVQA-eyJsaWNlbnNlSWQiOiJKTUZMMDRRVlF ...

  4. html关键字高亮

    /** * @id 父节点id * @key 关键字 */ function keyLight(id, key, bgColor){ var oDiv = document.getElementByI ...

  5. Java入门(4)

    阅读书目:Java入门经典(第7版) 作者:罗格斯·卡登海德 面向对象编程(OOP)将程序视为对象的集合,确定程序要完成的任务,然后将这些任务指派给最适合完成它们的对象.换言之,计算机程序是一组对象, ...

  6. 使用rabbitmq实现集群im聊天服务器消息的路由

    这个地址图文会更清晰:https://www.jianshu.com/p/537e87c64ac7 单机系统的时候,客户端和连接都有同一台服务器管理.   image.png 在本地维护一份userI ...

  7. 【Kata Daily 190917】Numericals of a String(字符出现的次数)

    题目: You are given an input string. For each symbol in the string if it's the first character occuren ...

  8. 如何将别人Google云端硬盘中的数据进行保存

    查了好久终于知道! 如何将别人Google云端硬盘中的数据进行copy,而不是右键发现只有添加快捷方式 只要shift+z就可以保存了! 之后等我弄清楚怎么将别人家的云盘中的数据集导到colab再来详 ...

  9. Metasploitable3学习笔记--永恒之蓝漏洞复现

    漏洞描述: Eternalblue通过TCP端口445和139来利用SMBv1和NBT中的远程代码执行漏洞,恶意代码会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不 ...

  10. Java并发原理层面:ReentrantLock中lock()、unlock()全解析

    一.前言 Java线程同步两种方式,synchronized关键字和Lock锁机制,其中,AQS队列就是Lock锁实现公平加锁的底层支持. 二.AQS源码对于lock.lock()的实现 2.1 AQ ...