3

私は喜んで、私が取り組んでいる API のモジュールを作成してテストし、次のコマンドを使用していました。

python -m unittest myAPI.tests.APITests.test_mod_to_test 

予想どおり、私のテストtests.pyは module にありますmyAPIapi.pyこれはうまく機能しており、テストしている関数を保持するファイル内のコードをリファクタリングする必要があることがわかりました。変更する必要があるものを変更し、コマンド ラインに戻り、入力を節約するためにキーボードを押し上げてまったく同じコマンドを実行しました。このエラーが発生しました:

AttributeError: 'module' object has no attribute 'tests' 

ディレクトリまたはtests.py. ファイルを移動したり、コマンドを変更したりしませんでした。次tests.pyを使用して、Python シェルにファイルをインポートできます。

from myAPI import tests

この後、次のように入力します。

print tests

そして出力は期待されるものです:

<module 'myAPI.tests' from '/path/to/myAPI/tests.pyc'>

実際には何もインストールされていない virtualenv で python 2.7 を使用しています。アプリはdjango 1.2.1アプリケーション用ですが、テスト中にdjangoに触れていないため関係ありません(環境にインストールされている場合を除く)。

これは私を困惑させており、ディレクトリまたはtests.pyの一部を変更せずに、うまく機能していたのがうまくいかなかった理由を理解しています. どんな助けでも大歓迎です。

4

1 に答える 1

1

このエラーの2つの考えられる理由を提案できますが、それ以上の情報がなければ知ることは不可能です。

  1. 間違った場所からテストを実行しています。「python-munittestmyAPI.tests.APITests.test_mod_to_test」を実行している場所を指定していません。__init__.pymyAPIディレクトリ内から実行している場合、myAPIディレクトリ内のファイルにアクセスできないため、奇妙な失敗が発生する可能性があります。したがって、myAPIテストを含むディレクトリからその呼び出しを実行することを確認する必要があります。

  2. __init__.py'tests'ディレクトリにファイルがありません。新しいディレクトリを作成するときに、1つを入れるのを忘れがちです。これがないと、ディレクトリ内から何もインポートできません。

于 2013-02-14T02:18:59.230 に答える