pytest单元测试笔记

单元测试–pytest使用

学习链接

安装(使用的是python3.6.8版本)
  • 使用虚拟环境 pipenv:先进入程序所在文件夹,终端运行pipenv install,安装虚拟环境
  • 在虚拟环境中安装pytest包,终端运行pipenv install pytest,安装完成
  • 进入虚拟环境pipenv shell,查看包是否安装正确版本:pytest --version
创建第一个单元测试 (设为unit1.py)
def func(x):
		return(x+1)
def test_answer():   # 单元测试前缀test_
		assert func(3) == 5

运行:pipenv run python -m pytest unit1.py
测试结果

pytest fixtures:显式,模块化,可伸缩

测试夹具目的:提供一个固定的基线,测试可以可靠地重复执行。

import pytest
@pytest.fixture
def smtp_connection():
		import smtplib
		return smtplib.SMTP("smtp.gmail.com",587,timeout=5)
def test_echo(smtp_connection):
		response,msg = smtp_connection.ehlo()
		assert response == 250
		assert 0

运行:pipenv run python -m pytest unit1.py
在这里插入图片描述

范围:在类,模块或会话中跨测试共享夹具实例

将fixture函数放入单独的conftest.py文件中,以便来自目录中多个测试模块的测试可以访问fixture函数:

import pytest
import smtplib

@pytest.fixture(scope="module")
def smtp_connection():
    return smtplib.SMTP("smtp.gmail.com", 587, timeout=5)

再次使用夹具的名称,smtp_connection您可以通过smtp_connection在任何测试或夹具功能中(在所在目录中或下面conftest.py)将名称列为输入参数来访问其结果:

def test_ehlo(smtp_connection):
    response, msg = smtp_connection.ehlo()
    assert response == 250
    assert b"smtp.gmail.com" in msg
    assert 0  # for demo purposes

def test_noop(smtp_connection):
    response, msg = smtp_connection.noop()
    assert response == 250
    assert 0  # for demo purposes

在这里插入图片描述
看到相同的(模块范围的)对象被传递到两个测试函数中,因为pytest在回溯中显示传入的参数值。因此,使用两个测试函数的运行速度与单个测试函数一样快,因为它们重用相同的实例。

更高范围的灯具首先被实例化

在功能的功能请求中,较高范围(例如session)的夹具首先比较低范围的夹具(例如function或class)实例化。相同范围的灯具的相对顺序遵循测试功能中声明的顺序,并尊重灯具之间的依赖关系。

import pytest


@pytest.fixture(scope="session")
def s1():
    pass


@pytest.fixture(scope="module")
def m1():
    pass


@pytest.fixture
def f1(tmpdir):
    pass


@pytest.fixture
def f2():
    pass


def test_foo(f1,m1,f2,s1):
    assert 0

请求的灯具test_foo将按以下顺序实例化:

s1:是最高范围的夹具(session)。
m1:是第二个最高范围的夹具(module)。
tmpdir:是一个function-scoped fixture,需要f1:它需要在这一点实例化,因为它是一个依赖项f1。
f1:是参数列表中的第一个function-scoped fixture test_foo。
f2:是参数列表中最后一个function-scoped fixture test_foo。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、linux 1,linux常用命令 2,某个时间段日志的查询 3,linux文件的上传和下载 二、功能测试 1,工作中所遇到的错误 2,测试流程: 3,测试计划元素: 4,测试报告元素: 5,测试点: 6,测试方法: 7,bug相关问题 8,adb常用命令 9,软件测试原则 10,测试用例编写的要素 11,测试用例的设计原则 12,软件产品质量特性 13,android四大组件 14,web测试和app测试的区别 15,app的anr的根本原因 16,app的crash的原因 17,h5页面图片未加载出来问题排查 18,区分原生和h5页面 19,为什么不能用jenkins打包 三、性能测试 1,了解jmeter 2,性能指标 3,如何做性能测试 四、接口测试 1,如何设计接口测试用例 2,为什么要做接口测试 3,接口测试的关注点 4,request处理cookie的三种方式 五、自动化测试 1,自动化核心框架 2,自动化测试的好处 3,自动化的前提 4,自动化测试的场景 5,元素定位的8种方式 6,如果一个元素无法定位,一般会考虑哪些原因 7,driver.close()和driver.quit()的区别 8,自动化脚本断言 9,判断页面元素是否存在 10,js在web自动化中的作用展示 11,自动化代码优化 12,selenium对比RF 13,自动化测试脚本三种等待 14,PO模式 六、HTTP协议 1,HTTP协议特点: 2,HTTP传输原理 3,get和post的区别 4,HTTP响应代码 5,osi七层模型 6,三次握手过程 7,session和cookie的区别 8,tcp和udp的区别 9,sockect通信原理 10,post的三种请求方式 七、数据库 1,sql分类 2,数据库事务特性:ACID 3,mysql索引的类型 4,池化思想 5,redis 6,如何提高数据库运行效率 八、java 1,面向对象的三个特征 2,重写和重载 3,比较sping,sping mvc 4,进程和线程的区别 5,java三层架构 6,处理异常 九、python 1,字符串反转的7种方法 2,new 和 _init_ 3,不使用中间变量交换两个变量的值 4,python四大内置高阶函数 5,python带颜色输出 6,python *args,**kargs用法 7,python常用模块 8,python多线程 9,python发送邮件 10,python操作图像 11,python的replace()方法的使用
pytest是一个强大的Python框架,可以用于进行单元测试和功能、接口自动化测试。相比于unittest,pytest支持的功能更多更全面。它是一个非常成熟的Python单元测试框架,比unittest更灵活、容易上手,并且可以与selenium、requests、appium等结合实现Web自动化、接口自动化和App自动化。此外,pytest还具有跳过测试用例、失败用例重试、生成美观的测试报告、与Jenkins持续集成等功能。它还有许多强大的插件,可以实现各种操作,如生成HTML格式的自动化测试报告、测试用例分布式执行、改变测试用例执行顺序、用例失败后重跑等。安装pytest非常简单,只需使用pip install pytest命令即可。在使用pytest时,需要遵循一定的命名规则,如模块名以test_开头或以test_结尾,测试类名以Test开头且不能有init方法,测试方法以test开头。需要注意的是,pytest不支持中文路径,如果项目路径中有中文会报错。总的来说,pytest是一个功能强大、灵活易用的单元测试框架。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [pytest单元测试框架](https://blog.csdn.net/dianma5263/article/details/101357021)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [软件测试人必须要会的——pytest单元测试框架](https://blog.csdn.net/m0_52650621/article/details/117779463)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值