6

pytest Web サイトのドキュメントを調べましたが、単体テスト中に固定ファイルを読み取るなど、「テスト リソース」を操作する明確な例は見つかりませんでした。http://jlorenzen.blogspot.com/2007/06/proper-way-to-access-file-resources-in.htmlが Java について説明しているものに似たもの。

たとえば、ソース管理にチェックインした yaml ファイルがある場合、そのファイルからロードするテストを作成する正しい方法は何ですか? これは要するに、クラスパス (PYTHONPATH?) に相当する Python 上の「リソース ファイル」にアクセスする正しい方法を理解することだと思います。

これは単純なはずです。簡単な解決策はありますか?

4

2 に答える 2

2

おそらく、探しているのはpkg_resourcesまたはpkgutilです。たとえば、python ソース内に「resources」というモジュールがある場合、次を使用して「resourcefile」を読み取ることができます。

with open(pkg_resources.resource_filename("resources", "resourcefile")) as infile:
    for line in infile:
        print(line)

また:

 with tempfile.TemporaryFile() as outfile:
        outfile.write(pkgutil.get_data("resources", "resourcefile"))

後者は、「スクリプト」が実行可能な zip ファイルの場合でも機能します。前者は、卵からリソースを解凍する必要なく機能します。

ソースのサブディレクトリを作成してもモジュールにはならないことに注意してください。__init__.pypkg_resources および pkgutil の目的でモジュールとして表示されるようにするには、ディレクトリ内で名前が付けられたファイルを追加する必要があります。__init__.py空にすることができます。

于 2014-07-01T08:07:44.367 に答える