如何解决Odoo pytest pycharm
我正在尝试在 pycharm 中为 odoo 13 运行 pytest,但没有成功。从控制台,使用此命令(python odoo-bin -c odoo.conf -i test_module --test-enable)测试运行正常。 你如何在odoo中运行单元测试? 您是否有一些文档,说明如何设置 pycharm 以运行 pytest? 谢谢!
解决方法
您可以在此处找到结构测试 Test Module Structure
另外请检查您编写代码的文件夹和文件的命名,
for example - tests/test_todo.py Also,don't forget to update the import in tests/init.py to from. import test_todo
这是因为 Odoo 在搜索属于模块 Code Reference 的测试时希望测试模块名称以 test_ 开头
运行测试用例的命令:
python ./odoo.py -i module_to_test --log-level=test -d your_database --db-filter=your_database --test-enable --stop-after-init
注意:测试用例仅运行且仅使用 demo
数据。
我能够使用 pycharm 为自定义插件运行测试,但这仅适用于我的案例中的自定义插件,因为我使用 docker 来设置我的 odoo 实例,这意味着 odoo 是一个二进制文件,而不是复制源代码。>
顺便说一下,此回复使用了包 pytest-odoo,请先查看他们的文档。
要使用 docker + pycharm + pytest-odoo 执行此操作,您需要像这样指定一个 Dockerfile:
USER root
RUN apt-get update && \
apt-get install -y --no-install-recommends \
python3-pip
RUN pip3 install pytest-odoo coverage pytest-html
USER odoo
还有一个像这样的常规 docker-compose:
services:
web:
container_name: plusteam-odoo-web
build:
context: .
dockerfile: Dockerfile
image: odoo:14
depends_on:
- db
ports:
- "8069:8069"
volumes:
- odoo-web-data:/var/lib/odoo
- ./config:/etc/odoo
- ./addons:/mnt/extra-addons
command: --dev all
db:
container_name: plusteam-odoo-db
image: postgres:13
ports:
- "5432:5432"
environment:
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD=odoo
- POSTGRES_USER=odoo
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- odoo-db-data:/var/lib/postgresql/data/pgdata
volumes:
odoo-web-data:
odoo-db-data:
一旦你有了这个,你可以运行docker-compose up -d
来让你的odoo实例运行,odoo容器将安装pytest-odoo,下一部分是告诉pycharm使用带有odoo修改图像的远程解释器包括 pyest-odoo 包:
现在每次您在 pycharm 中运行脚本时,它们都会根据您提供的图像启动一个新容器。
在检查了 pycharm 启动的容器后,我意识到它们将项目的目录绑定到容器内的 /opt/project/
目录,这很有用,因为您在运行测试时需要修改 odoo.conf
。
您可以为您应该做的自定义测试数据库自定义数据库连接,重要的部分是您需要将 addons_path
选项映射到 /opt/project/addons
或启动的容器内的最终路径由 pycharm 提供,您可以在其中使用自定义插件。
有了这个,你可以像这样为 pytest 创建一个 pycharm 脚本:
请注意我们如何为测试修改提供 odoo 配置的路径,这样 pycharm 启动的容器中可用的 odoo 将知道您的自定义插件代码所在的位置。
现在我们可以运行脚本甚至调试它,一切都会按预期进行。
我在一篇中等文章中进一步讨论了这个问题,我什至写了一个带有工作演示的存储库,所以你可以尝试一下,希望这会有所帮助:
https://medium.com/plusteam/how-to-run-odoo-tests-with-pycharm-51e4823bdc59 https://github.com/JSilversun/odoo-testing-example
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。