在编写类或函数的时候,还可以为其编写测试。
通过测试,可确定代码面对各种输入都能按要求工作。
在程序中添加新代码时,也可以对其进行测试,确认他们不会破坏程序既有的行为。
利用测试可以在给用户之前,发现问题。
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 单元测试和测试用例
测试分两种:
- 单元测试:测试某方面
- 测试用例:是一组单元测试,测试各种情况下。
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 测试类啦
编写测试代码
- 函数必须test_开头
- 必须有断言
收集一个问题意义不大
依旧成功
11.3.4 使用夹具
之前的测试函数中,我们每次都创建了一个实例 进行实例化。
但是在包含数百个测试的项目中是大问题。
夹具(fixture)可以帮我们搭建测试环境,直接他自己去做这些。意味着创建多个测试使用的资源。
使用夹具 :
编写一个使用装饰器 @pytest.fixture,写在函数定义前面的指令,python将该指令应用于函数,以修改函数代码的行为。
创建一个Anoy。。。实例,让test—survey。py中的两个测试函数都可以使用它。
如果编写的代码有大量重复的,有一种已得到验证的方式可以用来消除重复代码,另外就是对于简单的测试,可以使用夹具,特别是创建多个测试使用的资源的情况下。