【问题标题】:nosetests.exe calling setup_class() but pycharm unit tests aren'tnosetests.exe 调用 setup_class() 但 pycharm 单元测试不是
【发布时间】:2015-01-27 06:31:57
【问题描述】:

我正在尝试将 SqlSoup 移植到 python 3。我使用 PyCharm 作为我的 IDE,我想运行 unit tests

如果我在 pycharm 中运行单元测试,我会得到以下输出:

C:\bin\python\python.exe "C:\Program Files (x86)\JetBrains\PyCharm Community Edition 4.0.3\helpers\pycharm\utrunner.py" C:\Users\jdearing\Documents\deleteme\sqlsoup\tests\test_sqlsoup.py true
Testing started at 12:53 PM ...

Error
Traceback (most recent call last):
  File "C:\Users\jdearing\Documents\deleteme\sqlsoup\tests\test_sqlsoup.py", line 25, in setUp
    engine.execute(sql)
NameError: name 'engine' is not defined

但是,如果我从命令行运行测试,一切正常:

C:\Users\jdearing\Documents\deleteme\sqlsoup>c:\bin\python\Scripts\nosetests-3.4.exe tests\test_sqlsoup.py
.............................
----------------------------------------------------------------------
Ran 29 tests in 0.549s

OK

归结为这个方法永远不会被调用:

    @classmethod
    def setup_class(cls):
        global engine
        engine = create_engine('sqlite://', echo=True)
        for sql in _ddl:
            engine.execute(sql)

是的,这是一个全局变量,我会在单元测试运行后改进它们。

Pycharm 要求我安装鼻子以满足依赖关系,所以我假设它的测试运行器正在使用该模块而不是其他模块。为什么会给出不同的结果?

【问题讨论】:

    标签: python-3.x pycharm nose


    【解决方案1】:

    据我所知,鼻子的设置必须是以下格式,以便在测试类开始时拾取和运行鼻子:

    @classmethod 
    def setUpClass(cls):
        global engine
        ...
    

    【讨论】:

      猜你喜欢
      • 2013-07-22
      • 2010-10-31
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-12
      • 2016-08-19
      相关资源
      最近更新 更多