Pytest之基本介绍
时间:2022-07-22
本文章向大家介绍Pytest之基本介绍,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
VOL 143
20
2020-07
今天距2021年164天
这是ITester软件测试小栈第143次推文
本文3075字,阅读约需8分钟
一
Pytest概念
Pytest
是 Python 的一种单元测试框架,与 Python 自带的 unittest
测试框架类似,但是比 unittest 框架使用起来更简洁,效率更高。
二
Pytest特点
Pytest是一个非常成熟的Python测试框架,主要特点有以下几点:
- 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考;
- 能够支持简单的单元测试和复杂的功能测试;
- 支持参数化;
- 执行测试过程中可以将某些测试用例跳过(skip),或者对某些预期失败的case标记成失败;
- 支持重复执行(rerun)失败的 case;
- 支持运行由 nose, unittest 编写的测试 case;
- 可生成html 报告;
- 方便jenkins持续集成;
- 可支持执行部分用例;
- 具有很多第三方插件,并且可以自定义扩展。
三
Pytest安装
① 安装pytest命令:
pip install pytest
② 查看pytest版本:
pytest --version
③ 安装生成测试结果的HTML报告pytest-html。
pip install pytest-html
这里已经安装过,所以输出信息和第一次安装不一样。
四
Pycharm配置Pytest
① pycharm依次选择,File->Settings->Tools->Python Integrated Tools。
② 配置用例脚本运行模式。
③ 菜单栏,点击Edit Configurations。
④ 依次点击"+" --》 Python tests --》pytest,配置项目路径如下:
五
Pytest用例运行规则
用Pytest写用例时候,一定要按照下面的规则去写,否则不符合规则的测试用例是不会执行的。
- 文件名以 test_*.py 文件或*_test.py;
- 以
test_
开头的函数; - 以
Test
开头的类,不能包含 __init__ 方法; - 以
test_
开头的类里面的方法; - 所有的包(package)必项要有__init__.py 文件。
六
Pytest简单使用
环境都准备好了,尝试下使用pytest运行用例。
① 新建py文件,写两条测试用例。
import pytest
def test_demo1():
assert 3 == 3
def test_demo2():
assert 3 == 5
if __name__ == '__main__':
pytest.main()
② 运行之后,结果如下:
Testing started at 12:37 ...
C:Users96984Desktopcodelearn_pytestvenvScriptspython.exe "C:ruanjianpycharm2019.3PyCharm 2019.3.1pluginspythonhelperspycharm_jb_pytest_runner.py" --path C:/Users/96984/Desktop/code/learn_pytest/demo/demo_pytest.py
Launching pytest with arguments C:/Users/96984/Desktop/code/learn_pytest/demo/demo_pytest.py in C:Users96984Desktopcodelearn_pytestdemo
============================= test session starts =============================
platform win32 -- Python 3.6.8, pytest-5.4.3, py-1.9.0, pluggy-0.13.1 -- C:Users96984Desktopcodelearn_pytestvenvScriptspython.exe
cachedir: .pytest_cache
metadata: {'Python': '3.6.8', 'Platform': 'Windows-10-10.0.18362-SP0', 'Packages': {'pytest': '5.4.3', 'py': '1.9.0', 'pluggy': '0.13.1'}, 'Plugins': {'html': '2.1.1', 'metadata': '1.10.0'}, 'JAVA_HOME': 'C:\Program Files\Java\jdk1.8.0_77'}
rootdir: C:Users96984Desktopcodelearn_pytestdemo
plugins: html-2.1.1, metadata-1.10.0
collecting ... collected 2 items
demo_pytest.py::test_demo1 PASSED [ 50%]
demo_pytest.py::test_demo2 FAILED [100%]
demo_pytest.py:8 (test_demo2)
def test_demo2():
> assert 3 == 5
E AssertionError
demo_pytest.py:10: AssertionError
================================== FAILURES ===================================
_________________________________ test_demo2 __________________________________
def test_demo2():
> assert 3 == 5
E AssertionError
demo_pytest.py:10: AssertionError
=========================== short test summary info ===========================
FAILED demo_pytest.py::test_demo2 - AssertionError
========================= 1 failed, 1 passed in 0.05s =========================
Process finished with exit code 0
以上
That‘s all
- 用aop加redis实现通用接口缓存
- spring boot 实现mysql读写分离
- spring boot集成druid连接池
- spring boot整合dubbox进行服务拆分
- Spring Cloud中如何保证各个微服务之间调用的安全性
- Spring Boot Actuator监控页面报错解决
- Spring Cloud中如何优雅的使用Feign调用接口
- Spring Cloud Eureka 集群高可用
- Spring Cloud Eureka 增加权限认证
- Spring Cloud Eureka 初探
- 房价网是怎么使用分布式作业框架elastic-job
- Spring Cloud Sleuth Zipkin 展示追踪数据
- Spring cloud Zuul Filter 使用小经验
- Spring Cloud Eureka REST 接口
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Thrift 跨服务开发框架
- Java并发之BlockingQueue 阻塞队列(ArrayBlockingQueue、LinkedBlockingQueue、DelayQueue、PriorityBlockingQueue、Sy
- Java并发之CountDownLatch 多功能同步工具类
- Java并发之CyclicBarrier 可重用同步工具类
- Java并发之ScheduledExecutorService(schedule、scheduleAtFixedRate、scheduleWithFixedDelay)
- Java并发之Condition 并发同步控制
- Java并发工具类Semaphore应用实例
- Java并发之死锁实例
- Java并发之ThreadPoolExecutor 线程执行服务
- Java并发之工具类 ForkJoin 任务分解
- 简单的 http 服务器
- 动态代理:cgib、jdk、java javassist
- JAVA NIO Channel
- JAVA NIO Scatter/Gather(矢量IO)
- JAVA NIO FileChannel 内存映射文件