web-dev-qa-db-ja.com

Pycharmとunittestが機能しない

PYCharm 3.0.1に問題があります。基本的な単体テストを実行できません。

これが私のコードです:

import unittest from MysqlServer import MysqlServer


class MysqlServerTest(unittest.TestCase):


    def setUp(self):
        self.mysqlServer = MysqlServer("ip", "username", "password", "db", port)


    def test_canConnect(self):
        self.mysqlServer.connect()
        self.fail()


if __name__ == '__main__':
    unittest.main()

ここにpycharmが私に与えるすべてのものがあります

テストフレームワークにテストレポーターをアタッチできない、またはテストフレームワークが予期せず終了する

また言います

AttributeError: class TestLoader has no attribute '__init__'

そしてイベントログ:

2:14:28 PM Empty test suite

問題は、手動でpythonファイル(スクリプトとしてpycharmを使用)を実行するとき)です。

----------------------------------------------------------------------
Ran 1 tests in 0.019s

FAILED (failures=1)

どちらが普通かはわざとテストを失敗させます。私はここで何が起こっているかについて少し無知です:設定-> Python統合ツール->パッケージ要件ファイル:/ src/testデフォルトのテストランナー:Unittests pyunit 1.4.1がインストールされています

何か助けてくれてありがとう。

編集:unitests.pyの基本的な使用法でも同じことが起こります

import unittest


class IntegerArithmenticTestCase(unittest.TestCase):
def testAdd(self):  ## test method names begin 'test*'
    self.assertEquals((1 + 2), 3)
    self.assertEquals(0 + 1, 1)

def testMultiply(self):
    self.assertEquals((0 * 10), 0)
    self.assertEquals((5 * 8), 40)


if __name__ == '__main__':
    unittest.main()
19
drgn

これはおそらく、設定ダイアログでテストフレームワークを正しく設定しなかったためです。

enter image description here

16
Games Brainiac

これは元のポスターには当てはまりませんでしたが、これを引き起こすもう1つの原因は、Wordの「テスト」で始まらないテスト関数であることです。

class TestSet(unittest.TestCase):

    def test_will_work(self):
        pass

    def will_not_work(self):
        pass
44
binarysubstrate

間違いなくpycharmのこと、上から繰り返す、

  • 実行->設定の編集。
  • テストのインスタンスを選択し、赤いマイナスボタンを押します。
4
shlomoa

まったく同じ問題があります。個々のテストを認識するという事実はファイル名に関連していることがわかりました。私の場合、PyCharmがtest_calculate_kpi.pyに名前を変更したときにテストとして認識しなかったtest_calculate_kpis.pyがすぐに認識されました。

1
MPacho

PyCharmとほとんどのデフォルトのテストランナー(py.test、nosetest、unittestなど)でHTMLレポートを生成する4つのステップ:

  1. テストメソッドにprefix 'test'(他の人が以前に述べたように)を指定してください。 def test_run1()
  2. テストレポートパッケージのドキュメントから広く使用されているサンプルコードは

    import unittest
    import HtmlTestRunner
    
    class TestGoodnessOfFitTests(unittest.TestCase):
    
     def test_run1(self):
      ...
    
    if __name__ == '__main__':
     unittest.main(testRunner=HtmlTestRunner.HTMLTestRunner(output='t.html'))
    

    このコードは通常、すべてのユニットテストと「メイン」キャッチャーコードを含むテストクラスファイルにあります。このコードにより、警告Empty test suiteが継続的に発生しました。したがって、すべてのif __name__ ...コードを削除です。これで、ファイルにはTestGoodnessOfFitTestsクラスのみが含まれます。さて、さらに

  3. 新しいmain.pyを作成テストクラスファイルと同じディレクトリにあり、次のコードを使用します。

     import unittest
     import HtmlTestRunner
     test_class = TestGoodnessOfFitTests()
     unittest.main(module=test_class, 
     testRunner=HtmlTestRunner.HTMLTestRunner(output='t.html'))
    
  4. 古い実行構成を削除、main.pyを右クリックしてRun 'main'を押します。 Preferences -> Python Integrated Tools -> Default test runnerで正しい設定を確認します(私の場合はpy.testとnoseが機能しました)

出力

Running tests... 
----------------------------------------------------------------------
 test_gaussian_dummy_kolmogorov_cdf_1 (tests.evaluation_tests.TestGoodnessOfFitTests) ... OK (1.033877)s

----------------------------------------------------------------------
Ran 1 test in 0:00:01

OK



Generating HTML reports... 
0
Fábio

私も同じ問題を抱えていました。ファイルの名前はtest_exercise_detectors.py(複数の「検出器」に注意)で、test_exercise_detectorsという名前のパックに収められていました。ファイルの名前をtest_exercise_detector.py(単一の「検出器」)に変更すると、問題が修正されました。

0
Steve Wehba

私も同じ問題を抱えていましたが、ワークスペースが適切に更新されていないと感じました。私もファイル->同期(Ctrl + Aly + y)をしました。しかし、それは解決策ではありませんでした。私はテストの名前を変更しただけですpythonファイル名ともう一度コードを実行してみましたが、うまくいきました。

0
Kishor kumar R