一篇文章教你Pytest快速入门和基础讲解,一定要看!

前言
目前有两种纯测试的测试框架,pytest和unittest
unittest应该是广为人知,而且也是老框架了,很多人都用来做自动化,无论是UI还是接口
pytest是基于unittest开发的另一款更高级更好用的单元测试框架
出去面试也好,跟别人说起来也好,pytest的逼格明显高于unittest
为什么要用Pytest
pytest 的官方网站介绍,它具有如下特点:
非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
能够支持简单的单元测试和复杂的功能测试
支持参数化
执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败
支持重复执行(rerun)失败的 case
支持运行由 nose, unittest 编写的测试 case
可生成 html 报告
方便的可持续集成工具 jenkins 集成
可支持执行部分用例
具有很多第三方插件,并且可以自定义扩展

安装Pytest

cmd运行

pip install -U pytest
 
pip3 install pytest -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

查看版本

pytest --version

快速开始

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
"""
__title__  =
__Time__   = 2020-04-06 12:33
__Author__ = 小菠萝测试笔记
__Blog__   = https://www.cnblogs.com/poloyy/
"""
 
def func(x):
    return x + 1
 
 
def test_answer():
    assert func(3) == 5
 
 
class TestClass:
    def test_one(self):
        x = "this"
        assert "h" in x
 
    def test_two(self):
        x = "hello"
        assert hasattr(x, "check")

然后,cmd进入当前文件目录,直接执行

pytest

知识点
如果只执行 pytest ,会查找当前目录及其子目录下以 test_*.py 或 *_test.py 文件,找到文件后,在文件中找到以 test 开头函数并执行
如果只想执行某个文件,可以 pytest start.py
加上-q,就是显示简单的结果: pytest -q start.py
Pytest用例的设计原则
用Pytest写用例时候,一定要按照下面的规则去写,否则不符合规则的测试用例是不会执行的

文件名以 test_*.py 文件和*_test.py
以 test_ 开头的函数
以 Test 开头的类,不能包含 __init__ 方法
以 test_ 开头的类里面的方法
所有的包 package 必须要有__init__.py 文件
Pytest执行用例规则
注意,下面讲的都是在cmd中执行pytest命令

1、某个目录下所有的用例

pytest

2、执行某一个 py 文件下用例

pytest 脚本名称.py

3、运行start.py 模块里面的某个函数,或者某个类,某个类里面的方法

加v和不加-v都可以,加-v的话,打印的信息更详细

pytest -v 08_mark.py::TestClass::test_method
 
pytest 08_mark.py::TestClass::test_method
 
pytest start.py::test_answer

4、运行start.py 模块里面,测试类里面的某个方法

pytest start.py::TestClass::test_two

5、-m 标记表达式(后续讲解)

pytest -m login

将运行用 @pytest.mark.login 装饰器修饰的所有测试,后面再展开讲标记哦

6、-q 简单打印,只打印测试用例的执行结果

pytest -q start.py

7、-s 详细打印

pytest -s start.py

8、-x 遇到错误时停止测试

pytest start.py -x

9、—maxfail=num,当用例错误个数达到指定数量时,停止测试

pytest start.py --maxfail=1

10、-k 匹配用例名称

执行测试用例名称包含http的所有用例

pytest -s -k http start.py

11、-k 根据用例名称排除某些用例

1 pytest -s -k "not http" start.py

Pycharm运行Pytest
平时写代码,咱们都在Pycharm写的,怎么可能一直用cmd来跑用例呢,现在我们就来看看在Pycharm中如何运行Pytest

首先,我们先要去settings里面设置单元测试框架为Pytest
如果是nosetests的话,右键运行是以python脚本运行的哦
如果设置了unittest则是以unittest框架去运行
注意
pytest 是可以兼容 unittest 脚本的,之前写的 unittest 用例也能用 pytest 框架去运行

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方进群即可自行领取。         

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/177309.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DDoS攻击频发,科普防御DDoS攻击的几大有效方法

谈到目前最凶猛、频率高,且令人深恶痛绝的网络攻击,DDoS攻击无疑能在榜上占有一席之地。各种规模的企业报包括组织机构都可能受到影响,它能使企业宕机数小时以上,给整个互联网造成无数损失。可以说,怎样防御DDoS攻击是…

【鸿蒙应用ArkTS开发系列】- 云开发入门实战二 实现城市多级联动Demo(上)

目录 概述 云数据库开发 一、创建云数据库的对象类型。 二、预置数据(为对象类型添加数据条目)。 三、部署云数据库 云函数实现业务逻辑 一、创建云函数 二、云函数目录讲解 三、创建resources目录 四、获取云端凭据 五、导出之前创建的元数据…

【endnote】如何将参考文献放到想放的位置

1. 方式 直接将生成的文献全选拖到想放的位置 注意:不要使用ctrlx这种操作。 2.具体操作 2.1 新建测试文档 如下图: 2.2 引用两篇文献】 如下图: 2.3 测试 如下图,选中所有已经引用的文献。 拖拽到想要防止的位置。 新…

JavaFx学习问题3---Jar包路径问题 (疑难杂症)

文章目录 前置提要:解决方法:调试JAR包后续补充: 前置提要: 我做了的JavaFx程序中,需要通过一个文件夹的相对路径,获取文件夹下所有音频文件的路径,把这些路径字符串放到一个List集合里,然后用Media让它播放声音。问题…

周报6_YMK

周报6 本周主要在看代码:看Medusa头的代码发现不是很了解base_model那部分,所以又去看了llama2的代码和一些相关博客。 重写了一部分佛山中医学院项目的代码,更规范一些。 调研CosmoFlow,是一个深度学习预测宇宙参数的模型&…

git中的分支管理:git branch,git checkout,解决git中的分支冲突的方法【Git学习三】

😁 作者简介:一名大四的学生,致力学习前端开发技术 ⭐️个人主页:夜宵饽饽的主页 ❔ 系列专栏:Git等软件工具技术的使用 👐学习格言:成功不是终点,失败也并非末日,最重要…

【亚太杯思路助攻】2023年第十三届APMCM亚太地区大学生数学建模竞赛——(文末领取方式)

2023年第十三届APMCM亚太地区大学生数学建模竞赛——来啦!!! 大家准备好了吗?别担心,【数模加油站】会像数模国赛、研赛一样,第一时间提供无偿解题思路、代码、参考文献等资料帮助大家。 祝各位小伙伴都能…

Instant Web API .Net Core Crack

Instant Web API .Net Core 是立即构建即时数据库 Web API,无需编码。在几分钟内生成您的 Web API,以更快地构建应用程序。使用 VS 2022 和 Entity Framework Core 为任何 MS SQL 数据库生成 Web API。 新功能 - 使用 Visual Studio 2022 为 PostgreSQL …

RTS 客户端-服务器网络

Stone Monarch 从一开始就支持多人游戏,但随着时间的推移,网络模型经历了多次迭代。我最初基于这篇著名的帝国时代文章实现了点对点锁步模型。 点对点锁定步骤有一些众所周知的问题。点对点方面使玩家很难相互连接,并增加了每个新玩家的网络…

【2018年数据结构真题】

方法一 给定一个含n(n>1)个整数的数组,请设计一个在时间上尽可能高效的算法,找出数组中未出现的最小正整数。例如,数组{-5,3,2,3}中未出现的最小正整数是1;数组{1,2,…

设计循环队列(详解)

呀哈喽,我是结衣 今天给大家带来的内容如标题所述,我们来设计环形队列,虽然队列没有讲,但是我就是想讲啊。那么环形队列现在开始。 队列的属性 在设计环形队列前,我们先要了解队列的特点(先进先出&#x…

TypeScript枚举

1、数字枚举 enum Direction {Up,Down,Left,Right, } var Direction; (function (Direction) {Direction[Direction["Up"] 0] "Up";Direction[Direction["Down"] 1] "Down";Direction[Direction["Left"] 2] "L…

CTF靶场搭建及Web赛题制作与终端docker环境部署

♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ ♡ ♥ 写在前面 ╔═══════════════════════════════════════════════════…

Servlet---HttpServlet、HttpServletRequest、HttpServletResponseAPI详解

文章目录 HttpServlet基础方法doXXX方法Servlet的生命周期 HttpServletRequest获取请求中的信息获取请求传递的参数获取 query string 里的数据获取form表单里的数据获取JSON里的数据如何解析JSON格式获取数据返回数据 HttpServletResponse设置响应的Header设置不同的状态码设置…

羊大师教你如何有效解决工作中的挑战与压力?

在现代社会,工作问题一直是许多人头疼的难题。无论是从工作压力到职业发展,工作问题不仅会影响个人的心理健康,还可能对整个工作团队的效率和和谐产生负面影响。因此,如何有效解决工作问题成为了每个职场人士都需要面对的挑战。 …

性能测试:系统架构性能优化思路

今天谈下业务系统性能问题分析诊断和性能优化方面的内容。这篇文章重点还是谈已经上线的业务系统后续出现性能问题后的问题诊断和优化重点。 系统性能问题分析流程 我们首先来分析下如果一个业务系统上线前没有性能问题,而在上线后出现了比较严重的性能问题&#x…

sonar对webgoat进行静态扫描

安装sonar并配置 docker安装sonarqube,sonarQube静态代码扫描 - Joson6350 - 博客园 (cnblogs.com) 对webgoat进行sonar扫描 扫描结果 bugs Change this condition so that it does not always evaluate to "false" 意思是这里的else if语句不会执行…

如何训练专属的OCR文字识别模型

1. 背景 在10月24日程序员节,公司决定向每位技术人员发放购物实体卡以示庆祝。然而,手动输入实体卡上的一大串卡密可能是一项繁琐且不那么智能的任务;同时,线上用户在绑定购物卡的时候,同样也是需要手动输入。 基于以…

城市易涝点监测,内涝积水监测仪的作用

近些年城市内涝问题格外突出,市民心中总在担心是不是哪一天自己的家园因为内涝,从而短时间内无法正常生活。并且内涝过后的淤泥可能堆积到路边或者居民住宅区等地,这会影响城市生态环境和公共卫生。 内涝积水监测仪为解决城市内涝问题提供了更…