【PYTEST】第二章编写测试函数
知识点:
- assert
- 测试函数标记
- 跳过测试
- 标记预期失败的测试用例
1. asseet
返回的都是布尔值,等于False(F) 就是失败, assert 有很多
- assert something
- assert a == b
- assert a <=b
2. 测试函数标记
pytest中提供了标记机制,使用marker做标记,一个测试函数可以有多个标记,当然一个marker可以标记多个测试函数,实战中,例如我们想对某些测试模块中的测试函数需要进行冒烟测试,某些测试函数不需要进行冒烟测试,,我们可以对需要进行冒烟测试的测试用例加上@pytest.mark.smoke装饰器,注意这边的smoke是我自定义的,并非内置,你可以随便命令成任意你喜欢的
pytest/ch2/test_smoke.py
import pytest @pytest.mark.smoke
def test_1():
assert (1, 2, 3) == (1, 2, 3) def test_2():
assert 1 == 2 def test_3():
assert 2 == 2 @pytest.mark.smoke
def test_4():
assert 2 != 5
$ cd pytest/ch2
$ pytest -v -m smoke test_smoke.py
分析:
-v : 为了详细看清结果,所以加了一个-v
-m smoke: 命名中指定了 smoke这个标记
我们可以从这个结果中得出,这个测试模块中有4个测试用例,但是只运行了指定标记的测试函数

3. 跳过测试
如果你不想运行这个测试用例,你可以给他添加内置的标记,skip. skipif
pytest/ch2/test_skip.py
import pytest @pytest.mark.skip(reason="这是错误的")
def test_1():
assert (1, 2, 3) == (1, 2, 3) def test_2():
assert 1 == 2 def test_3():
assert 2 == 2 @pytest.mark.smoke
def test_4():
assert 2 != 5
$ cd pytest/ch2
$ pytest -v test_skip.py

4. 标记预期失败的测试用例
用xfail 替代skip即可,这边就不做多余的演示了,自己可以试试
【PYTEST】第二章编写测试函数的更多相关文章
- 《CoffeeScript应用开发》学习:第二章 编写第一个CoffeeScript应用程序
CoffeeScript基础 语句 CoffeeScript没有分号,语句由新的一行结束,但是可以使用\将语句延续至下一行. 有时可以跨行实现函数调用: "foo". .conca ...
- 第二章 编写与设置Servlet
2.1 第一个Servlet package cc.openhome; import javax.servlet.ServletException; import javax.servlet.http ...
- 编写高质量代码:改善Java程序的151个建议(第二章:基本类型)
编写高质量代码:改善Java程序的151个建议(第二章:基本类型) 目录 建议21:用偶判断,不用奇判断 建议22:用整数类型处理货币 建议23:不要让类型默默转换 建议24:边界还是边界 建议25: ...
- Pytest编写测试函数
Pytest编写测试函数 一个规范的测试方法一定带有断言,在使用pytest时,可以直接使用Python自带的assert关键字 Pytest允许在assert关键字添加任意表达式,表达式的值通过bo ...
- [翻译]编写高性能 .NET 代码 第二章:垃圾回收
返回目录 第二章:垃圾回收 垃圾回收是你开发工作中要了解的最重要的事情.它是造成性能问题里最显著的原因,但只要你保持持续的关注(代码审查,监控数据)就可以很快修复这些问题.我这里说的"显著的 ...
- [翻译] 编写高性能 .NET 代码--第二章 GC -- 减少分配率, 最重要的规则,缩短对象的生命周期,减少对象层次的深度,减少对象之间的引用,避免钉住对象(Pinning)
减少分配率 这个几乎不用解释,减少了内存的使用量,自然就减少GC回收时的压力,同时降低了内存碎片与CPU的使用量.你可以用一些方法来达到这一目的,但它可能会与其它设计相冲突. 你需要在设计对象时仔细检 ...
- [翻译] 编写高性能 .NET 代码--第二章 GC -- 避免使用终结器,避免大对象,避免复制缓冲区
避免使用终结器 如果没有必要,是不需要实现一个终结器(Finalizer).终结器的代码主要是让GC回收非托管资源用.它会在GC完成标记对象为可回收后,放入一个终结器队列里,在由另外一个线程执行队列里 ...
- [翻译] 编写高性能 .NET 代码--第二章 GC -- 将长生命周期对象和大对象池化
将长生命周期对象和大对象池化 请记住最开始说的原则:对象要么立即回收要么一直存在.它们要么在0代被回收,要么在2代里一直存在.有些对象本质是静态的,生命周期从它们被创建开始,到程序停止才会结束.其它对 ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
随机推荐
- open_spiel 随笔
------------恢复内容开始------------ ------------恢复内容开始------------ 遇到的一些疑惑且已经解决的 1. SPIEL_CHECK_GT()诸如此类的 ...
- C. k-Amazing Numbers 解析(思維)
Codeforce 1417 C. k-Amazing Numbers 解析(思維) 今天我們來看看CF1417C 題目連結 題目 略,請直接看原題. 前言 我實作好慢... @copyright p ...
- Python+Post请求中涉及到多个参数data方法的应用
进行post请求,Python提供了httplib.urllib2,同时也可以引用requests模块的一些方法.前几天做持续集成,运用requests写了一个post请求.代码如下: import ...
- Charles使用part2——代理设置
一.charles代理原理: 如果本地开了代理: 二.设置代理 1.设置代理端口: proxy->proxy setting 打开代理设置界面,代理端口默认是 8888,可以使用默认也可以自己 ...
- Hash 算法与 Manacher 算法
目录 前言 简单介绍 简述 Hash 冲突 离散化 基本结构 普通 Hash 简述 例题 字符串 Hash 简单介绍 核心思想 基本运算 二维字符串 Hash 例题 兔子与兔子 回文子串的最大长度 后 ...
- Java的浅拷贝与深拷贝
Java的浅拷贝与深拷贝 Java中,所有的类都继承Object,Object中有clone方法,它被声明为了 protected ,所以我们但是如果要使用该方法就得重写且声明为public,必须在要 ...
- C# 集合类(二)
C# 集合类自己经常用到: 数组(Array).动态数组(ArrayList).列表(List).哈希表(Hashtable).字典(Dictionary),对于经常使用的这些数据结构,做一个总结,便 ...
- 剑指Offer-Python(16-20)
16.合并另个排序链表 # -*- coding:utf-8 -*- class ListNode: def __init__(self, x): self.val = x self.next = N ...
- NOIP前一些题目的理解
ZYB和售货机(图论,环) 题目链接 个人感觉这道题与基环树没有任何关系,你会发现,每个点最多只有一个入度和出度,所以只能是链或环. 还有就是本题的突破点就在于正确建图,题目的限制保证每个点的入度不大 ...
- vdbench测试实时可视化显示
前言 前一段时间碰到一个系统,用rados bench 去跑都还比较正常,但是一跑数据库就非常慢,测试工具会抛出延时过大的提示,经过排查发现,云平台中有一台虚拟机还运行着备份数据库的服务,而这个备份软 ...