PyCharm 运行 select 单元测试
PyCharm run select unittests
我有一个 python 包,其中我所有的单元测试 类 都存储在子包 mypkg.tests
的模块中。在 tests/__init__.py
文件中,我有一个名为 suite
的函数。我通常通过调用具有 test_suite='satpy.tests.suite'
的 python setup.py test
来 运行 这些测试。是否可以从 pycharm 到 运行 这个测试套件?
我拥有套件功能的原因是它只包含准备好从我的持续集成中 运行 的测试,但目录中存在其他失败的测试(来自旧版本的包)。我还可以看到这对于选择快速单元测试与长 运行ning 测试很有用。我试过 运行ning 作为脚本,用作 nosetest 或 unittest 配置。我尝试添加 if __name__ == "__main__":
和其他类型的命令行 运行ning 方法但没有成功。
有没有办法 运行 只从 pycharm 运行 配置中进行一些测试?
Pycharm 的 'Python Unittest' 配置在后台使用 unittest.TestLoader 加载测试。现在 Pycharm 实际上尝试自动收集测试用例,但不知道如何处理 TestSuite 实例,甚至更少的函数返回此类实例。
您的问题的解决方法是将 load_tests
函数添加到您的 tests/__init__.py
文件,如下所示:
def load_tests(loader, tests, pattern):
return suite()
然后在pycharm配置项中,选择'Script',给tests/__init__.py
load_tests
函数实际上告诉测试加载器模块中有哪些测试可用:)
在此处查看有关此绝妙技巧的更多信息:https://docs.python.org/2.7/library/unittest.html#load-tests-protocol
但请注意,它仅适用于 python 2.7 及更高版本。
有一件事我发现,在特定情况下,我的测试 class 来自本地模块中定义的 unittest.TestCase 的子 class。 pycharm 中有一个已知错误已经存在多年,在某些情况下,它有时无法完全看到 virtualenv 中的本地模块,例如将导入标记为未知。有一个解决方法,即为该本地项目添加 egg 或其源路径作为使用它的项目中的源。
当我对另一个错误执行该解决方法时,问题就消失了。因此,由于其他问题,pycharm 机器似乎无法将我的测试 class 识别为 unittest.TestCase。
我有一个 python 包,其中我所有的单元测试 类 都存储在子包 mypkg.tests
的模块中。在 tests/__init__.py
文件中,我有一个名为 suite
的函数。我通常通过调用具有 test_suite='satpy.tests.suite'
的 python setup.py test
来 运行 这些测试。是否可以从 pycharm 到 运行 这个测试套件?
我拥有套件功能的原因是它只包含准备好从我的持续集成中 运行 的测试,但目录中存在其他失败的测试(来自旧版本的包)。我还可以看到这对于选择快速单元测试与长 运行ning 测试很有用。我试过 运行ning 作为脚本,用作 nosetest 或 unittest 配置。我尝试添加 if __name__ == "__main__":
和其他类型的命令行 运行ning 方法但没有成功。
有没有办法 运行 只从 pycharm 运行 配置中进行一些测试?
Pycharm 的 'Python Unittest' 配置在后台使用 unittest.TestLoader 加载测试。现在 Pycharm 实际上尝试自动收集测试用例,但不知道如何处理 TestSuite 实例,甚至更少的函数返回此类实例。
您的问题的解决方法是将 load_tests
函数添加到您的 tests/__init__.py
文件,如下所示:
def load_tests(loader, tests, pattern):
return suite()
然后在pycharm配置项中,选择'Script',给tests/__init__.py
load_tests
函数实际上告诉测试加载器模块中有哪些测试可用:)
在此处查看有关此绝妙技巧的更多信息:https://docs.python.org/2.7/library/unittest.html#load-tests-protocol
但请注意,它仅适用于 python 2.7 及更高版本。
有一件事我发现,在特定情况下,我的测试 class 来自本地模块中定义的 unittest.TestCase 的子 class。 pycharm 中有一个已知错误已经存在多年,在某些情况下,它有时无法完全看到 virtualenv 中的本地模块,例如将导入标记为未知。有一个解决方法,即为该本地项目添加 egg 或其源路径作为使用它的项目中的源。
当我对另一个错误执行该解决方法时,问题就消失了。因此,由于其他问题,pycharm 机器似乎无法将我的测试 class 识别为 unittest.TestCase。