当前位置: 首页 > news >正文

猿创征文|Python基础——Visual Studio版本——pytest

Python基础——Visual Studio版本——pytest

目录

Python基础——Visual Studio版本——pytest

pytest概述

pytest特点

环境安装

注意点

控制台基础示例

执行示例

​编辑

pytest.main()

套件执行顺序

装饰器

判断语句


pytest概述

Pytest是一个使创建简单及可扩展性测试用例变得非常方便的框架。测试用例清晰、易读而无需大量的繁琐代码。只要几分钟你就可以对你的应用程序或者库展开一个小型的单元测试或者复杂的功能测试。pytest支持第三方插件,灵活性较高。

pytest特点

  • 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
  • 能够支持简单的单元测试和复杂的功能测试
  • 支持参数化
  • 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败
  • 支持重复执行(rerun)失败的case
  • 支持运行由nose, unittest编写的测试case
  • 可生成html报告
  • 方便的和持续集成工具jenkins集成
  • 可支持执行部分用例
  • 具有很多第三方插件,并且可以自定义扩展

环境安装

直接安装pip install pytest就行。

文件不是很大,很快就下载完毕。

版本查看命令

pip show pytest

注意点

  • 测试文件以test_开头(以_test结尾也可以)
  • 测试类以Test开头,并且不能带有 init 方法
  • 测试函数以test_开头
  • 断言使用基本的assert即可

控制台基础示例

# 基础函数用于输入值
def test(x):
    return x +1


# 测试函数是由test_开头的,这里assert断言是判断结果与目标返回是否相同
def test_answer():
    assert test(3)==5

基础示例使用:

可以在提示中看到,执行100%,但是出现了ERROR。第八行的结果与预期结果不符,这就代表测试用例未通过。

如果无法使用,请更换命令【python -m pytest 类名.py】,这里不限制test_开头或_test结尾。

如果是通过则会告知passed

# 基础函数用于输入值
def test(x):
    return x +1


# 测试函数是由test_开头的,这里assert断言是判断结果与目标返回是否相同
def test_answer():
    assert test(3)==4

执行示例

文件名称【test_demo.py】,文件名必须是test_开头

import pytest
 
class TestClass:
    def test_one(self):
        x = "this"
        assert "h" in x
 
    def test_two(self):
        x = "hello"
        assert len(x)==5
 
if __name__ == '__main__':
    pytest.main()

示例中能看到 

但是依然建议使用cmd控制台。 

pytest.main()

pytest.main()会自动读取当前目录下的所有test开头的.py文件,运行test方法或者类。

  • pytest的参数,例如:pytest -sv test_demo.py
  • -x 用例一旦失败,就立刻停止执行
  • --maxfile=num 用例达到多少停止执行
  • -m 标记用例
  • -k 执行包含某个关键字的测试用例
  • -v 打印详细日志
  • -s 打印输出日志 和v连用
  • --lf 只重新运行失败的用例
  • --ff 先运行失败的用例再运行正常的用例

套件执行顺序

装饰器

skip  : 跳过这个用例 

reason:注释/备注

# 跳过这个用例skip装饰器
@pytest.mark.skip(reason = "暂时不执行")
def test_case2():
    print("3这里是case2\n")

判断语句

不需要二次计算

# -*-coding:utf-8 -*-
import pytest
 
def test_A(x=2):
    print("%d**%d=%d",x,x,x**x)
    return x**x


@pytest.mark.skipif(test_A() == 4 ,reason="正确不需要二次计算")
def test_B(x=2):
    print("二次计算结果:",(x**x))
    return x**x

需要二次计算

# -*-coding:utf-8 -*-
import pytest
 
def test_A(x=3):
    print("%d**%d=%d",x,x,x**x)
    return x**x


@pytest.mark.skipif(test_A() == 4 ,reason="正确不需要二次计算")
def test_B(x=2):
    print("二次计算结果:",(x**x))
    return x**x

可以自行多搞一些demo做示例。 

相关文章:

  • 第二十四篇:稳定性之多环境建设
  • 【RHCE-第三天作业】
  • elementUI时间选择器:TypeError: value.getHours is not a function
  • “蔚来杯“2022牛客暑期多校训练营5
  • MyBatis Plus (七) --------- 插件扩展
  • css基础总结(css简介、css语法框架、css样式表格式、css选择器)
  • 东芝推出第三代碳化硅MOSFET来提高工业设备效率
  • Zookeeper集群搭建
  • 基于SSM的校园运动会管理系统
  • javaweb基于html5旅游攻略管理系统ssh
  • 司空见惯 - 好吃的姑娘
  • 深度学习之卷积类型
  • 软件测试—七年老鸟的成长感悟
  • 利用1433端口及提权总结
  • 深度学习(PyTorch)——加载数据初认识与实战操作
  • 【Leetcode】104. 二叉树的最大深度
  • canvas 高仿 Apple Watch 表盘
  • DataBase in Android
  • express + mock 让前后台并行开发
  • Java Agent 学习笔记
  • Java 内存分配及垃圾回收机制初探
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • nginx 配置多 域名 + 多 https
  • nodejs实现webservice问题总结
  • PV统计优化设计
  • Spring声明式事务管理之一:五大属性分析
  • Zsh 开发指南(第十四篇 文件读写)
  • 初探 Vue 生命周期和钩子函数
  • 工作中总结前端开发流程--vue项目
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 手机端车牌号码键盘的vue组件
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 微服务框架lagom
  • 微信开源mars源码分析1—上层samples分析
  • 微信小程序开发问题汇总
  • 项目实战-Api的解决方案
  • 译有关态射的一切
  • 正则表达式
  • NLPIR智能语义技术让大数据挖掘更简单
  • ​第20课 在Android Native开发中加入新的C++类
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #1014 : Trie树
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (bean配置类的注解开发)学习Spring的第十三天
  • (Python第六天)文件处理
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (七)c52学习之旅-中断
  • (七)理解angular中的module和injector,即依赖注入
  • (实战篇)如何缓存数据