软件测试是什么
软件测试的一个目的是验证你的猜想-猜想软件的内部逻辑,包括第三方的模块、代码包。甚至Python的内建的数据结构是如何运行的。Tasks项目使用名为Task的数据结构,它是用namedtuple工厂函数生成的。Task用于在UI层和API层之间传递信息。
from collections import namedtuple
Task = namedtuple('Task', ['summary', 'owner', 'done', 'id'])
# 使用_new_.defaults_创建一个默认的Task实例
Task.__new__.__defaults__ = (None, None, False, None)
运行pytest时可以指定目录和文件。如果不指定,会搜索当前目录以及其子目录中以test_开头或者已_test结尾的文件。pytest会自动搜索这些文件中的测试用例。
rootdir: D:\pytest\Tasks\tests,
inifile: pytest.ini & tox.ini & setup.cfg
测试结果 每个文件的测试情况只占据一行,两个点号表示两个测试用例均已通过;而Failure/erro/skip/xfail/xpass表示测试用例失败/错误/跳过/预期失败/预期失败但通过,会被标记为F/E/s/x/X。
编写测试函数
测试函数的命名规则:test_开头或者以_test结尾。 测试Tasks项目的文件目录如下:
所有的测试都放在tests文件夹中,与包含程序源代码的src文件夹分开。有一些文件比较重要,如README.rst(rst是使用reStrucuredText编写的文档格式,readme是项目须知,CHANGELOG是记录项目变更的日志文件),LICENSE.txt(许可证文件),setup.py(安装脚本),setup.cfg(配置文件),pytest.ini(配置文件),tox.ini(配置文件),conftest.py(本地插件库,hook函数将自定义逻辑引入pytest,用于改善pytest的执行流程;fixtures则是一些用于测试前后执行配置及销毁逻辑的外壳函数)、init.py(初始化文件,表示函数主入口)。
使用fixture执行配置和销毁逻辑
@pytest.fixture()中的参数scope表示fixture的作用域,有function、class、module、session四个待选值。