你如何运行 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=<..Path>...
--test-enable
:启用 YAML 和单元测试。
./openerp-server --addons-path=<..Path>...
--test-commit
:提交由 YAML 或 XML 测试执行的数据库更改。
【讨论】:
错误:没有这样的选项:--test-enable --test-commit 没有效果,从我想用来提交测试所做的数据库更改的文档中,否则它们会滚动返回 如果您在 V7 上工作,请按照我昨天发布的上述选项进行操作。但是如果你在 6.1 上工作,那么......使用这个命令 ./openerp-server.py --addons-path=../../addons -u查看文档(例如 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 单元测试的主要内容,如果未能解决你的问题,请参考以下文章