从python调用任务运行unittest.main()

时间:2018-05-09 08:34:39

标签: python python-unittest pyinvoke

我试图通过Python Invoke library运行一些单元测试,但是我对Python的了解不足使我无法这样做。

这是我的示例代码:

my_tests.py

Predicate<URL> p = u -> u.getFile().isEmpty();

tasks.py

? super

这就是我得到的:

? extends

测试从my_tests.py和tasks.py运行良好,但是当我使用invoke stuff break时。 我怎样才能使它工作或我应该在哪里看下一个?

1 个答案:

答案 0 :(得分:1)

您遇到的问题是unittest.main()使用调用程序的命令行参数来确定要运行的测试。由于您的程序正在以inv tests执行,因此程序的第一个参数是tests,因此unittest正在尝试运行不存在的模块名tests的测试

你可以通过从system arguments list弹出最后一个参数(tests)来解决这个问题:

import sys

from invoke import task

@task
def tests(ctx):
    # Pop "tests" off the end of the system arguments
    sys.argv.pop()
    main()

@task
def other_task(ctx):
    print("This is fine")

def main():
    import my_tests
    import unittest
    unittest.main(module='my_tests')

if __name__ == '__main__':
    main()