1. 开始准备:安装:
前置条件:pytest 需要基于: Python 3.6, 3.7, 3.8, 3.9, or PyPy3
1. 用以下命令安装
pip install -U pytest
2. 验证安装是否成功:
$ pytest --version pytest 6.2.4
2. 创建你的第一个程序
创建一个Python 文件, 名字叫‘test_sample.py’, 其中包括一个方法, 并且测试:
图中,100%意味着所有的程序都执行了。当执行结束,pytest 显示一个错误报告, 因为func(3) 不等于5
注释: 可以使用assert 语句去判断测试结果,
3. 执行多个测试用例:
Pytest 可以执行所有以 “test_*.py”, "_test.py"格式命名的 在当前目录的文件
4. 断言一个确定的异常抛出(Assert that a certain exception is raised)
用“quiet” reporting 模式来执行这个function
-q/ --quiet 标志使导出很简洁
5. 将不同的test组成到一个类里面(Group multiple tests in a class)
我们有时会希望将不同的test放到一个类里面, pytest 很方便
pytest 会发现所有的以‘test_’ 开始的方法。 没有必要subclass, 只需要确保class 有test. 否则就会被忽略
上述事例中, 第一个成功, 第二个失败。 下面的结果很明确的告诉成功和失败的原因
Grouping test in class, 有如下作用:
• Test organization 组织测试用例
• Sharing fixtures for tests only in that particular class 可以共享一些test
• Applying marks at the class level and having them implicitly apply to all tests 可以标记所有class 层面的信息并且立刻应用到所有test中
有些在group test 中值得注意的事项, 每个test 都需要有特别的实例(instance)在class里面。
Having each test share the same class instance would be very detrimental to test isolation and would promote poor test practices. This is outlined below
注意:添加在class 层面的attribute 是应用于整个class 的 , 被共享在两个test 之中
1.6 为方法测试请求特别的临时字典(Request a unique temporary directory for functional tests)
Pytest 提供 Builtin fixtures/function 语句为请求提供任意的资源, 就像一个临时的特殊字典
在方法里面会列出tmp_path 的信息, pytest 将寻找并且呼叫一个fixture factory, 在执行这个方法之前 去创建一个资源