掌握Excel打印预览技巧让文档呈现更完美的秘密
753
2022-05-29
pytest框架使编写小型、可读的测试变得容易,并且可以拓展以支持应用程序和库的复杂功能测试。
pytest要求Python版本3.7+。
PyPI包名:pytest。
安装pytest
在命令提示符中输入pip指令安装pytest
pip install -U pytest
检查版本
>pytest --version pytest 7.1.2
写第一个pytest
本例中采用的Python IDE为PyCharm 2022.1 (Community Edition)
创建一个名为test_sample.py的文件输入以下代码
# content of test_sample.py def inc(x): return x + 1 def test_answer(): assert inc(3) == 5
输出结果为:
[100%]是指运行所有测试用例的总体进度。完成后,pytest会显示一个失败报告,因为 func(3)不返回 5。
运行多个pytest
pytest将在当前目录及其子目录中运行test_.py或_test.py格式的所有文件。更一般地说,它遵循标准的测试发现规则。
断言引发某个异常
使用raises帮助程序断言某些代码会引发异常:
# content of test_sysexit.py import pytest def f(): raise SystemExit(1) def test_mytest(): with pytest.raises(SystemExit): f()
输出结果:
对一个类中的多个测试进行分组
开发多个测试后,可能希望将它们分组到一个类中。pytest使创建包含多个测试的类变得容易:
# content of test_class.py class TestClass: def test_one(self): x = "this" assert "h" in x def test_two(self): x = "hello" assert hasattr(x, "h")
pytest按照其Python测试发现约定发现所有测试,因此它同时找到test_前缀函数。无需对任何内容进行子类化,但请确保在类前面加上Test前缀,否则将跳过该类。我们可以通过传递模块的文件名来运行该模块:
第一个测试通过,第二个测试失败。可以轻松查看断言中的中间值,以帮助您了解失败的原因。
由于以下原因,将类中的测试分组可能有以下好处:
组织测试
在特定类中为测试共享工具
在类级别应用标记并让它们隐式应用于所有测试
在类内对测试进行分组时需要注意的是,每个测试都有一个唯一的类实例。让每个测试共享同一个类实例将非常不利于测试隔离,并且会促进不良的测试实践。概述如下:
# content of test_class_demo.py class TestClassDemoInstance: value = 0 def test_one(self): self.value = 1 assert self.value == 1 def test_two(self): assert self.value == 1
pytest -k TestClassDemoInstance -q
请求用于功能测试的唯一临时目录
pytest提供了内置的固定设置/函数参数来请求任意资源,例如唯一的临时目录:
# content of test_tmp_path.py def test_needsfiles(tmp_path): print(tmp_path) assert 0
在测试函数签名中列出名称tmp_path,pytest将在执行测试函数调用之前查找并调用fixture工厂以创建资源。在测试运行之前,pytest会创建一个唯一的每个测试调用的临时目录:
Python
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。