你如何运行 OpenERP yaml 单元测试

Posted

技术标签:

【中文标题】你如何运行 OpenERP yaml 单元测试【英文标题】:How do you run OpenERP yaml unit tests 【发布时间】:2013-01-05 16:58:34 【问题描述】:

我正在尝试在我的 openERP 模块上运行单元测试,但无论我写什么,它都不会显示测试是通过还是失败!有人知道如何输出测试结果吗? (使用 Windows OpenERP 6.1 版)

我的 YAML 测试是:

- 
  I test the tests
-
  !python model: mymodelname: |
    assert False, "Testing False!"
    assert True, "Testing True!"

我重新加载模块时的输出 openerp-server.exe --update mymodule --log-level=test -dtestdb 显示测试运行但没有错误?!

... TEST testdb openerp.tools.yaml_import: I test the tests

我做错了什么?

编辑:------------------------------------------ ---------------------------

好吧,经过大量摆弄!python,我尝试了另一个测试:

- 
    I test that the state
-
!assert model: mymodel, id: mymodel_id:
    - state == 'badstate'

这导致了预期的失败:

WARNING demo_61 openerp.tools.yaml_import: Assertion "NONAME" FAILED
test: state == 'badstate'
values: ! active == badstate

所以我猜我的语法有问题,在版本 7 中可能会按预期工作。

感谢大家的回答和帮助!

【问题讨论】:

【参考方案1】:

这是我尝试过的。它似乎对我有用:

!python model: sale.order: |
    assert True, "Testing True!"
    assert False, "Testing False!"

(也许你忘记了“|”字符)

然后:

bin/start_openerp --init=your_module_to_test -d your_testing_database --test-file=/absolute/path/to/your/testing_file.yml

您可能希望在此之前创建测试数据库:

createdb mytestdb --encoding=unicode

希望对你有帮助

更新:这是我的日志(我将测试文件称为 sale_order_line_test.yml)

ERROR mytestdb openerp.tools.yaml_import: AssertionError in Python code : Testing False!
mytestdb openerp.modules.loading: At least one test failed when loading the modules.
loading test file /path/to/module/test/sale_order_line_test.yml
AssertionError in Python code : Testing False!

【讨论】:

仍然不高兴:(我使用了 --test-file 参数,从日志中可以清楚地看出它运行了两次测试(一次用于初始化,一次用于测试文件)但是没有失败的测试,并且测试报告目录中没有任何内容..我的测试一定有问题,或者我应该升级 openerp 因为这应该可以工作。 我已经为这个答案授予了赏金,因为虽然仍然无法让它工作,但它是最完整的。感谢您的帮助 当您说“似乎对我有用”时 - 您在哪里看到失败的消息?在服务器日志中? 您使用的是哪个版本的 OpenERP?对我来说,它也测试了 2 次。我更新了我的答案,以便您可以看到我得到的日志 我正在使用 v 6.1,我看到你的工作正常。我一定错过了什么,感谢您的反馈。【参考方案2】:

在你的终端试试这个,它会起作用的。

./openerp-server --addons-path=<..Path> --log-level=test --test-enable

希望这会对你有所帮助。

【讨论】:

您使用的是哪个版本?我收到“错误:没有这样的选项:--test-enable”.. 我正在使用 v6.1【参考方案3】:

启动服务器时尝试在终端上键入以下路径。

./openerp-server --addons-path=&lt;..Path&gt;...--test-enable

:启用 YAML 和单元测试。

./openerp-server --addons-path=&lt;..Path&gt;...--test-commit

:提交由 YAML 或 XML 测试执行的数据库更改。

【讨论】:

错误:没有这样的选项:--test-enable --test-commit 没有效果,从我想用来提交测试所做的数据库更改的文档中,否则它们会滚动返回 如果您在 V7 上工作,请按照我昨​​天发布的上述选项进行操作。但是如果你在 6.1 上工作,那么......使用这个命令 ./openerp-server.py --addons-path=../../addons -u -d - - 测试提交 @Timothy :当您启动服务器或更新模块时,您的 .yml 文件是否与其他文件一起加载?请看一下。 我尝试了你的建议。 yml 文件确实加载了 - 它显示了“TEST testdb openerp.tools.yaml_import:我测试了测试”,但没有显示任何失败(或通过)的测试 @Timothy 如果您的测试用例运行没有任何错误,请检查您的系统。演示数据将用于您为其编写的各个模型。【参考方案4】:

查看文档(例如 here 和 here),我看不出您的代码有任何明显错误。

但是,我不熟悉--log-level=test。也许尝试使用-v--debug--log-level=debug 标志而不是--log-level=test 运行它?您可能还需要尝试--log-level 参数的大写变体,即--log-level=DEBUG

test 肯定不是标准 Python logging module 的 logging levels 之一,虽然我不能排除它们 adding a custom log level 的可能性,但我认为情况并非如此。

为了以防万一,尝试删除obj = self.browse(cr, uid, ref("HP001"))这一行可能也是值得的。

【讨论】:

根据文档:--log-level=LOG_LEVEL 指定日志记录的级别。接受的值:['info'、'debug_rpc'、'warn'、'test'、'critical'、'debug_sql'、'error'、'debug'、'debug_rpc_answer'、'notset'] 和:--test- report-directory=TEST_REPORT_DIRECTORY 如果设置,将在此目录中保存所有报告的样本。都试过了,都没有运气

以上是关于你如何运行 OpenERP yaml 单元测试的主要内容,如果未能解决你的问题,请参考以下文章

Golang - 用于解析 yaml 文件并检查对象的单元测试

yaml模块管理用例,单元测试

Linux 内核模块开发怎么进行单元测试

运行单元测试时禁用 Django South?

教你如何编写Vue.js的单元测试的方法

如何从单元测试运行 dropwizard 服务器