第十一章 测试代码

发布于:2025-02-16 ⋅ 阅读:(34) ⋅ 点赞:(0)

在编写类或函数的时候,还可以为其编写测试。

通过测试,可确定代码面对各种输入都能按要求工作。

在程序中添加新代码时,也可以对其进行测试,确认他们不会破坏程序既有的行为。

利用测试可以在给用户之前,发现问题。

11.1.1 使用pip 安装pytest

使用pytest库。pytest库是一组工具,不仅能帮助写测试代码,而且能持续支持随项目增大而变复杂的测试。

python提供了一款名为pip的工具,可以用来安装第三方包。pip是外部的包,更新频繁,所以可以先更新pip。

python -m pip install --upgrade packagename

这行命令可以更新系统中安装的任何包。

11.1.2 安装pytest

python -m pip install --user pytest
python -m pip install --user packagename

命令可以安装众多的第三方包

11.2 测试函数

 首先要有被测试的代码

 该函数的正确结果是 把名和姓 合并成姓名。

写个类 测试函数方法好用

11.2.1 单元测试和测试用例

测试分两种:

  1. 单元测试:测试某方面
  2. 测试用例:是一组单元测试,测试各种情况下。 

11.2.2 可通过的测试

测试函数 

11.2.3 运行测试

 如果直接运行test。。。。。py文件没有结果和输出,因为我们没有调用这个测试函数。

我们应该让pytest替我们运行这个测试文件。

在终端找到测试文件所在的文件夹(第一章)

终端默认是c盘,换成d盘  

文件夹路径直接复制就行

python -m pytest

 

未通过的测试

 

11.2.6 测试中可以写多个

把被测试代码改回来

 

添加新测试 记得测试函数的名称写的比较详细清楚,这样测试出错能明白是哪个出错了。

 11.3 测试类

前面是针对单个函数的测试,下面写针对类的测试。

11.3.1 各种断言

断言形式 描述
assert a == b 断言两个值相等
assert a != b 断言两个值不相等
assert a > b 断言 a 大于 b
assert a < b 断言 a 小于 b
assert a >= b 断言 a 大于等于 b
assert a <= b 断言 a 小于等于 b
assert x in y 断言 x 在可迭代对象 y 中
assert x not in y 断言 x 不在可迭代对象 y 中
assert isinstance(a, b) 断言 a 是 b 类型的实例

 

11.3.2 一个要测试的类

 

编写一个程序 证明类能正确工作

11.3.3 测试类啦 

编写测试代码 

  1. 函数必须test_开头
  2. 必须有断言

 

收集一个问题意义不大

 

 依旧成功

11.3.4 使用夹具

之前的测试函数中,我们每次都创建了一个实例 进行实例化。

但是在包含数百个测试的项目中是大问题。

夹具(fixture)可以帮我们搭建测试环境,直接他自己去做这些。意味着创建多个测试使用的资源。

使用夹具 :

编写一个使用装饰器 @pytest.fixture,写在函数定义前面的指令,python将该指令应用于函数,以修改函数代码的行为。

创建一个Anoy。。。实例,让test—survey。py中的两个测试函数都可以使用它。

如果编写的代码有大量重复的,有一种已得到验证的方式可以用来消除重复代码,另外就是对于简单的测试,可以使用夹具,特别是创建多个测试使用的资源的情况下。