Pytest 不常用使用技巧

Pytest 设置模式测试

使用 Pytest 进行测试时,如果需要对项目内的脚本进行测试时。可以设置 pytest.inipyproject.tomltox.ini 或者 setup.cfg 等文件配置需要测试的文件相关信息(但是不建议配置 .cfg 文件[^1])。下例为一个简单的配置文件:

pytest.ini >unfolded
1
2
3
4
[pytest]
minversion = 2.0
norecursedirs = .git .tox requirements*
python_files = test*.py, __init__.py, test_*.py

其中 python_files 属性确定了可以用于测试的范围为 “test” 开头以及 “test_” 开头以及 “init“ 的脚本文件

Pytest 异常测试

通常情况下测试是检验结果是否符合要求,但某些情况下需要测试的是满足某种条件下会发生异常。Pytest 提供了相应的方法实现运行(使用 pytest.raise())结果发生异常的情况才能通过测试:

test.py >unfolded
1
2
3
4
5
6
7
import pytest
#... 省略代码
def test_mul_by_zero_raise_exception():
# 测试乘数中存在 0时,返回值异常
obj = Objec()
with pytest.raise(ValueError):
obj.mul(3, 0)

测试代码运行时间

需要测试代码运行时间消耗可以使用命令 pytest --durations=0 -vv <file_name.py>,其中参数 --durations 表示时间超过该时间——即该方法是表示代码运行时间的下限

限定测试

在某些情况下,比一定需要测试项目中所有文件的前提下,可以在测试脚本中添加标识之后使用 -m 参数以选择需要测试的限定脚本。

test_postgresrepo.py >unfolded
1
2
3
4
5
6
import pytest

pytestmark = pytest.mark.integration

def test_dummpy():
pass

使用 py.test -svv -m integration 可以限定测试有 integration 的脚本。可以参考文档 mark

说明

  1. 参考书籍 Leonardo Giordani, Clean Architectures In Python

参考

[^1]: API Reference — pytest documentation

Curl 命令使用

curl命令 是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl可以助一臂之力。

阅读更多

[统计学习]第四章朴素贝叶斯法

朴素贝叶斯法是以特征独立性假设为基础,利用贝叶斯定理进行分类方法。因为在朴素贝叶斯方法过程中,需要在学习过程中学习到生成数据的模式——该模式是能够进行预测前 $P(\hat{y}|X)$ 需要通过 $P(X|y)\times P(y)$ 方式能够构建数据生成机制;此外依赖独立性假设,使预测的方式转换为求解最大化后验概率来预测结果。

阅读更多

CentOS 安装 NodeJS

NodeJS 目前支持的长期稳定版本已更新到 12.19.0LTS,但考虑到目前大部分开发环境需求都是在 8.X 版本下,因此采用安装 NodeJS 8.X 版本。根据参考文档[^1]。

环境依赖:

  • CentOS 7
  • gcc / g++ 4.9.4 以后版本,或者使用 clang /clang++ 3.4.2 以后版本
  • Python 2.6 或者 2.7
  • GNU make 3.8.1 之后版本
阅读更多

[书籍]摄影的哲学思考

  作者(威廉 弗卢塞尔)关于装置工具、人和社会关系的变化,不得不让人会想到工业化前和工业化后,以及当前面临这的 AI 带来影响三者关系变化。在工业化前工具是人的器官延伸,它是做人类实现某种目的的凭借。但是随着工业化的带来的工具装置功能变化,作为了一个“大机器”下的生产力,直接侵入了人的工作,人反而变化为工具的工具了。而当前技术变化的点是作为智能的工具更加侵入人的工作,导致人与工具的关系会发生重要的变化。

阅读更多

[书籍]乡土中国

  这本书是第一次看关于中国社会研究的书籍,是经由空哥推荐阅读。也是第一次认识到,我好像是根本就对我们所处的中国社会一无所知(虽然一直在自我催眠告诫自己需要了解这个社会)。这种无知包括中国社会在历史演变之下,那些真实的人是怎么面对这个社会的,又是因为一种什么样的力量让他们去以这样的方面面对。

阅读更多
[统计学习]第三章 K 邻近法

[统计学习]第三章 K 邻近法

K-Nearest Neighbour 即 K 邻近算法,是可用于解决分类和回归问题的算法。在用于解决分类问题的思路是在已知的数据实例上,对于新的实例根据 $k$ 个最邻近的已知训练实例通过多数表决的方案进行预测,因此 $k$ 邻近算法不是一个显式学习过程。$k$ 邻近算法模型要素是通过 $k$ 选择,距离度量以及分类决策规则确认。

阅读更多
[统计学习]第二章感知机

[统计学习]第二章感知机

感知机(Perceptron),是线性分类模型,利用一个线性超平面对数据进行二分类。

1. 感知机模型

感知机的模型的假设是对于输入空间中的变量,经模型
$$
f(x)=\text{sign}(w\cdot x+b) \tag{1} \label{1}
$$
得到输入变量 $y\in \lbrace -1, +1 \rbrace$ 。对于模型中的 $\text{sign}$ 它是一个指示函数,用于筛选在某种条件下属于正例,反之属于负例。该模型是属于 $y=f(x)$ 的模型,即是一个判别模型

阅读更多
[统计学习]第一章基本概念

[统计学习]第一章基本概念

1. 基本概念

统计学习(statistical learning),谈论的是统计机器学习(statistical machine learning),解决的方式是利用数据,抽取出相关特征,构建数据的模型以发现数据中的知识,并最终对未知数据进行分析和预测。而围绕数据的角度来有一个基本的假设,即建立知识模型的数据和预测分析使用的数据具有相同的性质。而且对于数据

阅读更多