如何 运行 Odoo 测试 unittest2?
How to run Odoo tests unittest2?
我尝试 运行使用 --test-enable 进行 odoo 测试,但它不起作用。我有几个问题。
根据文档,测试只能在模块安装期间 运行,当我们添加功能然后想要 运行 测试时会发生什么?
是否可以像 Pycharm 那样从 IDE 进行 运行 测试?
这对 运行 odoo 测试用例有用:
./odoo.py -i/-u module_being_tested -d being_used_to_test --test-enable
常用选项:
-i INIT, --init=INIT
install one or more modules (comma-separated list, use "all" for all modules), requires -d
-u UPDATE, --update=UPDATE
update one or more modules (comma-separated list, use "all" for all modules). Requires -d.
数据库相关选项:
-d DB_NAME, --database=DB_NAME
specify the database name
测试配置:
--test-enable: Enable YAML and unit tests.
@aftab 您需要添加 log-level
请参阅下文。
./odoo.py -d <dbname> --test-enable --log-level=test
关于您的问题,如果您正在更改已安装的模块并需要重新测试所有测试用例,那么您需要使用 -u <module_name>
或 -u all
(对于所有模块)简单地重新启动服务器) 使用上述命令。
这是一个非常好的 运行 直接使用 pytest 进行单元 odoo 测试的插件:
https://github.com/camptocamp/pytest-odoo
这是一个结果示例:
我能够 运行 使用 pycharm odoo 的测试,为此我使用了 docker + pytest-odoo + pycharm(使用远程解释器)。
首先你像这样设置一个 Dockerfile:
FROM odoo:14
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.yml 这样的:
version: '2'
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:
因此我们使用包扩展 odoo 图像以生成覆盖率报告和 pytest-odoo
一旦你有了这个,你就可以 运行 docker-compose up -d
得到你的 odoo 实例 运行ning,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
请注意,使用远程解释器,您只需要确保 odoo 二进制文件可以正确找到插件文件夹,您就万事大吉了:) 除了使用 Dockerfile 扩展图像有助于加快开发速度。
我尝试 运行使用 --test-enable 进行 odoo 测试,但它不起作用。我有几个问题。
根据文档,测试只能在模块安装期间 运行,当我们添加功能然后想要 运行 测试时会发生什么?
是否可以像 Pycharm 那样从 IDE 进行 运行 测试?
这对 运行 odoo 测试用例有用:
./odoo.py -i/-u module_being_tested -d being_used_to_test --test-enable
常用选项:
-i INIT, --init=INIT
install one or more modules (comma-separated list, use "all" for all modules), requires -d
-u UPDATE, --update=UPDATE
update one or more modules (comma-separated list, use "all" for all modules). Requires -d.
数据库相关选项:
-d DB_NAME, --database=DB_NAME
specify the database name
测试配置:
--test-enable: Enable YAML and unit tests.
@aftab 您需要添加 log-level
请参阅下文。
./odoo.py -d <dbname> --test-enable --log-level=test
关于您的问题,如果您正在更改已安装的模块并需要重新测试所有测试用例,那么您需要使用 -u <module_name>
或 -u all
(对于所有模块)简单地重新启动服务器) 使用上述命令。
这是一个非常好的 运行 直接使用 pytest 进行单元 odoo 测试的插件:
https://github.com/camptocamp/pytest-odoo
这是一个结果示例:
我能够 运行 使用 pycharm odoo 的测试,为此我使用了 docker + pytest-odoo + pycharm(使用远程解释器)。
首先你像这样设置一个 Dockerfile:
FROM odoo:14
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.yml 这样的:
version: '2'
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:
因此我们使用包扩展 odoo 图像以生成覆盖率报告和 pytest-odoo
一旦你有了这个,你就可以 运行 docker-compose up -d
得到你的 odoo 实例 运行ning,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
请注意,使用远程解释器,您只需要确保 odoo 二进制文件可以正确找到插件文件夹,您就万事大吉了:) 除了使用 Dockerfile 扩展图像有助于加快开发速度。