pytest插件汇总站点:http://plugincompat.herokuapp.com/
- pytest-xdist 多CPU执行
pytest -n 4
pytest -n auto
- pytest-cov 覆盖率
pytest --cov=src
...
----------- coverage: platform win32, python 3.6.3-final-0 -----------
Name Stmts Miss Cover
----------------------------------------
src/series.py 108 5 96%
src/tests/test_series 22 0 100%
----------------------------------------
TOTAL 130 5 97%
还可以使用--cov-report选项生成各种格式的报告:XML,注释和HTML。
- pytest-faulthandler 自动启用内置错误处理程序
经常使用用C / C ++编写的扩展模块,强烈建议使用此插件,因为它们更容易崩溃。
pytest-mock pytest和标准库的unittest.mock集成
pytest-django
非常好的快速入门教程
命令行和pytest.ini选项,用于配置Django
与pytest-xdist的兼容
使用django_db mark,访问数据库,在测试之间使用自动事务回滚,以及一组可以控制数据库的管理Fixtures向您的应用程序发出请求:client,admin_client和admin_user
在后台线程中运行Django服务器的live_server fixture
总而言之,这是生态系统中最完整的插件之一,是Django应用程序的必备软件。
- pytest-flakes
使用pyflakes(https://pypi.org/project/pyflakes/)检查你的代码,这是一个常见错误的源文件的静态检查器,例如缺少导入和未知变量。
安装后,使用--flakes选项激活它:
- pytest-ASYNCIO
asyncio(https://docs.python.org/3/library/asyncio.html)模块是Python 3的异步框架。 pytest-asyncio插件允许您编写异步测试函数,使您可以轻松测试异步代码。
@pytest.mark.asyncio
async def test_fetch_requests():
requests = await fetch_requests("example.com/api")
assert len(requests) == 2
- pytest-trio
类似asyncio标准模块,更简单,更友好,包含一些关于如何处理超时和并行任务组的新想法,以避免并行的常见错误。它还提供其他功能,使测试更容易和更可靠,例如用于测试超时的可控时钟,处理任务的特殊功能,模拟网络套接字和流等等。
- pytest-postgresql
def test_fetch_series(postgresql):
cur = postgresql.cursor()
cur.execute('SELECT * FROM comedy_series;')
assert len(cur.fetchall()) == 5
cur.close()
允许您测试需要运行PostgreSQL数据库的代码。包含客户端fixture,用于启动和关闭与正在运行的测试数据库的连接。在测试结束时,它会丢弃测试数据库以确保测试不会相互干扰。;postgresql_proc:一个会话范围的fixture,每个会话启动一次PostgreSQL进程,并确保它在结束时停止。postgresql它还提供了有关如何连接和配置测试数据库的几个配置选项。
- docker-services
启动并管理您需要的Docker服务,以便测试您的代码。这使得运行测试变得简单,因为您不需要自己手动启动服务;根据需要,插件将在测试会话期间启动和停止它们。
- pytest-selenium
def test_visit_pytest(selenium):
selenium.get("https://docs.pytest.org/en/latest/")
assert "helps you write better programs" in selenium.title
elem = selenium.find_element_by_link_text("Contents")
elem.click()
assert "Full pytest documentation" in selenium.title
- pytest-html
生告可以在Web服务器中提供,以便于查看,而且它们包含很好的功能,例如显示/隐藏不同类型的测试结果的复选框,而其他插件(如pytest-selenium)甚至能够将屏幕截图附加到失败的测试中,如在上一张图片中。
- pytest-cpp
为了证明pytest的框架非常灵活,pytest-cpp插件允许你运行用Google Test编写的测试(https://github.com/google/googletest)
或者Boost.Test(https://www.boost.org),它是用C++语言编写和运行测试的框架。
pytest-timeout
pytest-timeout插件在达到某个超时后自动终止测试。
- pytest-annotate
观察运行时类型信息的项目,可以使用该信息将类型注释插入到源代码中,而pytest-annotate使得pytest易于使用。
pytest-QT
pytest-qt插件允许您为Qt框架(https://www.qt.io/)编写的GUI应用程序编写测试,支持更受欢迎的Qt绑定:Pytt4 / PyQt5和PySide / PySide2 。
它提供了一个qtbot fixture,它具有与GUI应用程序交互的方法,例如单击按钮,在字段中输入文本,等待窗口弹出等等。这是一个快速示例,展示了它的实际应用:pytest-randomly 随机数
pytest-bdd:pytest的行为驱动开发
pytest-benchmark:基准测试
pytest-csv:将测试状态输出为CSV文件
pytest-docker-compose:这管理Docker容器,在测试运行期间使用Docker compose
pytest-excel:在Excel中输出测试状态报告
pytest-git: git
pytest-json:将测试状态输出为json文件
pytest-leaks:通过反复运行测试来检测内存泄漏
pytest-menu:让用户从控制台的菜单中选择要运行的测试
pytest-mongo:MongoDB的进程和客户端fixture
pytest-mpl:测试Matplotlib输出数据的插件
pytest-mysql:MySQL的进程和客户端fixtures
pytest-poo:使用“poo poo”表情符号替换失败测试的F字符
pytest-rabbitmq:RabbitMQ的进程和客户端装置
pytest-redis:Redis的进程和客户端装置
pytest-repeat:多次重复所有测试或特定测试以发现间歇性故障
pytest-replay:保存测试运行并允许用户稍后执行它们,以便重现崩溃和片状测试
pytest-rerunfailures:这标志着可以多次运行以消除片状测试的测试
pytest-sugar:通过添加进度条,表情符号,即时失败等来改变pytest控制台的外观和感觉
pytest-travis-fold:在Travis CI构建日志中折叠捕获的输出和覆盖率报告
pytest-vagrant:vagrant
pytest-vcr:使用简单标记自动管理VCR.py磁带(https://vcrpy.readthedocs.io/en/latest/)
pytest-virtualenv:这提供了一个管理虚拟的virtualenv工具
pytest-tap:这会持续监视源代码的变化并重新运行pytest
pytest-xvfb:这为您的UI测试运行Xvfb(虚拟帧缓冲区)
tavern:使用基于YAML的语法对API进行动化测试
xdoctest:重写内置doctests模块,使doctests更容易编写,更易于配置