2011-04-08 10 views
2

インストールのzeocluster/src/...ディレクトリ内のPlone 4用の製品を開発しています。私は自動テストを行っています。残念ながら、私が 'bin/client1 shell'を実行してから(path to Plone's Python)/bin/python setup.py testを実行すると失敗します。エラーはPlone 4で開発中の製品でテストを実行するにはどうすればよいですか?

File "buildout-cache/eggs/Products.PloneTestCase-0.9.12-py2.6.egg/Products/PloneTestCase/PloneTestCase.py", line 109, in getPortal 
    return getattr(self.app, portal_name) 
AttributeError: plone 

Plone 4で自動テストを実行する正しい方法は何ですか?

setup.pyにおいて

... 
test_suite = "nose.collector" 
... 

失敗試験:

import unittest 

from Products.PloneTestCase import PloneTestCase as ptc 

ptc.setupPloneSite() 

class NullTest(ptc.PloneTestCase):   
    def testTest(self): 
     pass 

def test_suite(): 
    return unittest.TestSuite([ 
      unittest.makeSuite(NullTest) 
     ]) 

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

答えて

3

あなたのbuildout.cfgを編集し、 'bin/test'スクリプトを作成する部分を追加するのが最も良い方法です。このような何か:

[test] 
recipe = zc.recipe.testrunner 
# Note that only tests for packages that are explicitly named (instead 
# of 'implicitly' added to the instance as dependency) can be found. 
eggs = 
# Use the name of the plone.recipe.zope2instance part here, might be zeoclient instead: 
    ${instance:eggs} 
defaults = ['--exit-with-status', '--auto-color', '--auto-progress'] 

はあなたのbuildout.cfgのメイン「増築」セクションの「パーツ」に「テスト」を追加することを忘れないでください。 bin/buildoutを実行すると、bin/testスクリプトが作成されます。このオプションの詳細と説明については、このレシピのPyPI pageを参照してください。

'bin/test'を実行すると、インスタンス部分で明示的に指定されたすべての卵のすべてのテストを実行する必要があります。これはあまりにも多くのテストを実行する可能性があります。 your.packageがインスタンス内の卵の一部である場合は、 'bin/test -s your.package'を使用してyour.packageのテストのみを実行します。

あなたが今テストで持っている 'パス'の代わりに、 'self.assertEqual(True、False)'のような失敗があることがわかっているテストを追加する方が良いことに注意してください。テストが実際に実行され、期待どおりに失敗したことを確認するのが簡単です。

私が開発している特定のパッケージをテストするためのシンプルなビルドを行っているとき、私は通常、this one for Plone 4のようなplonetestビルドアウトでconfigsの1つを拡張します。インスピレーションのためにそれを見ることができます。

+2

統合インストーラを使用してインストールした場合は、 "bin/buildout -c develop.cfg"を実行してbin/testおよびその他の開発指向ツールを入手します。 develop.cfgを編集してオプションをカスタマイズします。 – SteveM

2

ptc.setupPloneSite()はzope.testrunner層が設定されている場合、実際に実行される遅延機能を登録します。私はあなたがzope.testrunnerを使用していないと推測しているので、Ploneサイトが決して作成されないようにレイヤーが設定されていないので、その後、ポータルオブジェクトを取得しようとするとAttributeErrorが生成されます。

3

zope.testrunnerとzope.testingを使用してテストを実行する必要があります。 Ploneテストは鼻で実行することはできず、setuptoolsによって考案されたsetup.pyに対する 'test_suite'引数はサポートしていません。

その他の回答は、テストランナースクリプトを設定する方法を説明しています。

関連する問題