2017-06-23 18 views
0

私はConfigファイルをテストする必要があります。このConfigファイルでは、ConfigParserインスタンスが初期化され、次に設定ファイルがロードされます。Python Configparserはユニットテストのセクションを見つけることができませんか?

このパーサーファイルをユニットテストでインポートしましたが、このConfigParseインスタンスのノードを読み込もうとしました。しかし、セクションを見つけることができないというエラーが発生します。

どうすればよいですか?それを修正する方法はありますか?

編集: したがって、UnittestはConfigファイルをインポートしました。設定ファイルの名前はconfigと呼ばれます。インスタンスはp_configと呼ばれます。テストケースでは、インスタンスは次のように呼び出されます。

config.p_config.get('section1','a') 

設定ファイルはかなり標準的です。

import ConfigParser 
p_config = ConfigParser.SafeConfigParser() 
p_config.read("xxx.cfg") 

ので、私の設定ファイルはかなり通常のWindowsの設定のようになります。それは上げ

[section1] 
a = 1 
b = 2 
[section2] 
c = 2 
d = 4 

エラーはちょうどそれがセクションを見つけることができないと言う。

ConfigParser.NoSectionError: No section: 'section1' 

unittestのの内容:

class TestConfigFile(TestCase): 

    def setUp(self): 
     pass 

    def tearDown(self): 
     pass 


    def test_example(self): 
     print global_path_config.get('section1', 'a') 
+0

コードで正確な質問をしてください。 ;)json configの代わりにConfigParserを使用する場合。 – glegoux

+0

@glegouxこんにちは、私はそれを更新しました。 –

+1

configparserコード(ファイルを読み込んだ場所)と正確なエラーメッセージを投稿できますか? – chrki

答えて

-1

I adviできるだけConfigParserをあきらめてください。あなたの設定にjsonファイルを使用してください

import json 
from collections import OrderedDict 

def read_config(file_json): 
    with open(file_json, 'r') as filename: 
     config = filename.read() 
    return json.loads(config, object_pairs_hook=OrderedDict) 

def write_config(config, file_json): 
    data = json.dumps(config, indent=4) 
    with open(file_json, 'w') as filename: 
     filename.write(data) 
+3

ConfigParserとJSONは同じ用途には作られていません。あなたは彼の質問に答えません。 –

+0

私はそれを知っていますが、それがあなたの設定ファイルであれば。私は、Microsoft Windows INI(ConfigParser提供)よりjson構造で設定を使用するほうが良いと思います。しかし、それがthierceライブラリの設定ファイルであれば、その選択肢はありません。 – glegoux

+0

UnitTestでConfigParseインスタンスが動作しないことを意味しますか?しかしどう? –

0

実際にテスト用の設定ファイルを読み込まずに設定しているように聞こえます。

私はあなたがpython unittestモジュールを使用していると仮定します。

あなたのコマンドラインは、プロジェクトの実行とテストの実行とどのように違いますか?コマンドラインに問題がある可能性があります。

たとえば、python /path/to/file.py <--options> config.iniを使用してプログラムを起動し、python -m unittest /path/to/config/unittest -vを使用して単体テストを起動すると、設定ファイルが読み取られることはありません。

setUp(self):では、設定ファイルの場所でオブジェクトを初期化する必要があります。私は簡単にで削除することができますし、私の作業設定ファイルを汚染することなく私のテストにどのように関連しているかを正確に知るために、setUpに短い偽の設定ファイルを書きたいと思っています。

関連する問題