以Kotti项目为例使用pytest测试项目

在维护和构建大型项目时,单独一个一个手工测试代码已经不适用了,这时候就要用专门的测试框架进行测试。让我们以Kotti项目为例,用pytest这个测试框架进行实践测试吧。

使用python3.10 @Ubuntu 系统

准备工作

下载和安装kotti库

复制代码
pip install https://atomgit.com/skywalk/Kotti
cd Kotti
pip install -r requirements.txt
python3 setup.py develop --user

其它项目代码操作也是一样,将代码git clone到本地,然后安装依赖库,依赖库一般写到requirements.txt文件里。有的项目像Kotti还需要在python下安装。

安装好pytest和相关的库

复制代码
pip install pytest
pip install mock
pip install pytest-flake8 pytest-cov
pip install webtest zope.testbrowser

不同的python环境,可能会缺失不同的库,按照错误提示缺什么pip安装什么即可。

开始测试

在Kotti目录执行pytest

复制代码
~/github/Kotti$ pytest

输出类似:

pytest

=============================== test session starts ===============================

platform linux -- Python 3.10.12, pytest-8.1.1, pluggy-1.4.0

rootdir: /home/skywalk/github/kotti

configfile: pytest.ini

plugins: cov-5.0.0, flake8-1.1.1, Kotti-2.0.10.dev0

collected 454 items

kotti/init.py F

kotti/alembic/env.py F

kotti/alembic/versions/1063d7178fa_add_node_path_column.py F

kotti/alembic/versions/37a05f6246af_enlarge_name_title_path.py F

kotti/alembic/versions/413fa5fcc581_add_filedepot.py F

kotti/alembic/versions/4a3de0d0804a_add_foreignkey_indices.py F

kotti/alembic/versions/559ce6eb0949_update_node_path_column.py F

kotti/alembic/versions/57fecf5dbd62_initialize_workflow.py F

kotti/alembic/versions/814c4ec72f1_add_file_columns_to_images_table.py F

kotti/alembic/versions/9398ccf41c2_add_content_state_fo.py F

kotti/events.py F

kotti/fanstatic.py F

kotti/filedepot.py F

kotti/tests/init.py F

kotti/tests/conftest.py F

kotti/tests/test_app.py F................

kotti/tests/test_cache.py F......

F表示测试失败,后面的绿点表示测试成功,每个文档第一个测试是flake8,这个可以先不用去管,具体见文档:pytest的时候输出一个F后面跟很多绿色的点解读-CSDN博客

最后,应该将pytest测试集成到你的持续集成/持续部署(CI/CD)流程中,这样每次代码变更时都会自动运行测试。这有助于及早发现和修复问题,保持代码的健康和稳定。

调试

报错No module named 'webtest' 'zope.testbrowser'

===================================== ERRORS ======================================

_________________ ERROR collecting kotti/tests/test_functional.py _________________

ImportError while importing test module '/home/skywalk/github/kotti/kotti/tests/test_functional.py'.

Hint: make sure your test modules/packages have valid Python names.

Traceback:

/usr/lib/python3.10/importlib/init.py:126: in import_module

return _bootstrap._gcd_import(namelevel:, package, level)

kotti/tests/test_functional.py:3: in <module>

from webtest.forms import Upload

E ModuleNotFoundError: No module named 'webtest'

___________________ ERROR collecting kotti/tests/test_upload.py ___________________

ImportError while importing test module '/home/skywalk/github/kotti/kotti/tests/test_upload.py'.

Hint: make sure your test modules/packages have valid Python names.

Traceback:

/usr/lib/python3.10/importlib/init.py:126: in import_module

return _bootstrap._gcd_import(namelevel:, package, level)

kotti/tests/test_upload.py:4: in <module>

from zope.testbrowser.browser import LinkNotFoundError

E ModuleNotFoundError: No module named 'zope.testbrowser'

================================ warnings summary =================================

不明白为什么有时候会缺库,不过解决的方法很简单,缺什么装什么

安装需要的库:pip install webtest zope.testbrowser

相关推荐
wuyk5556 分钟前
Spider-第09讲-三格式落盘CSV-Excel-JSON
爬虫·python·json·excel
青少儿编程课堂8 分钟前
蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会图形化考级:校园大富翁经营闯关解析
c++·python·算法·bfs·信息学竞赛
特立独行的猫A7 小时前
用仓颉语言 cj-tauri 框架,五分钟给娃做了个鸿蒙形近字游戏
java·后端·python
大可不必了11 小时前
03 函数定义和调用
开发语言·python
承渊政道12 小时前
【Python编程—从入门到实践】(记分与闯关:用Python+Pygame,打造越战越精彩的太空大战!)
开发语言·python·pycharm·游戏程序·pygame
爱学习的程序媛12 小时前
Python常用框架梳理
开发语言·后端·python·ai·web·后端框架·python框架
imgsq12 小时前
GESP Python 一到四级:备考路线与真题特点
python·青少年编程
eggwyw14 小时前
Anaconda安装卸载的详细流程指南
开发语言·python
2601_9679791214 小时前
纯手写:Python安装pip完整教程,搞了几小时,终于成功
python·教程·pip·安装·包管理
Norna14 小时前
缓存文件从没写出来:一个 .json 被当成目录用了
python