我有一个python包,其中我所有的单元测试类都存储在子包mypkg.tests中的模块中。在tests/__init__.py文件中,我有一个名为suite的函数。我通常通过调用具有python setup.py test的test_suite='satpy.tests.suite'来运行这些测试。是否有可能从pycharm运行这个测试套件?
我之所以拥有套件函数,是因为它只包含可以从我的持续集成中运行的测试,但是目录中还存在其他失败的测试(来自包的旧版本)。我还可以看到,这对于选择快速单元测试和长时间运行测试非常有用。我尝试过作为脚本运行,作为nosetest或unittest配置。我尝试过添加if __name__ == "__main__":和其他类型的命令行运行方法,但没有成功。
是否有一种方法只运行一些来自pycharm运行配置的测试?
发布于 2016-04-25 19:38:11
Pycharm的“Python”配置在后台使用unittest.TestLoader加载测试。现在Pycharm实际上尝试自动收集测试用例,但不知道如何处理TestSuite实例,返回此类实例的函数甚至更少。
解决问题的方法是将load_tests函数添加到tests/__init__.py文件中,如下所示:
def load_tests(loader, tests, pattern):
return suite()然后在py魅力配置项中,选择'Script‘并给出tests/__init__.py
load_tests函数实际上告诉测试加载器哪些测试在模块中可用:)
在这里可以看到更多关于这个巧妙技巧的信息:https://docs.python.org/2.7/library/unittest.html#load-tests-protocol
不过,请注意,它只适用于python2.7及更高版本。
发布于 2019-12-02 19:52:53
有一件事我发现,在特殊情况下,我的Test类来自在本地模块中定义的unittest.TestCase子类。pycharm中有一个已知的bug已经存在多年了,有时它无法完全看到您的虚拟环境中的本地模块,比如将导入标记为未知。有一个解决方案,就是为该本地项目添加鸡蛋,或者将其源路径添加到使用它的项目中作为源。
当我为另一个bug做了那个解决方案时,问题就消失了。因此,由于另一个问题,pycharm机器似乎没有将我的Test类识别为unittest.TestCase。
https://stackoverflow.com/questions/36847349
复制相似问题