Pythonでunittestを実行すると parser.parse_args() にエラーが出る件
受付中
回答 0
投稿
- 評価
- クリップ 1
- VIEW 1,959
前提・実現したいこと
pythonの初心者ですが、unittest でテストケースを作ろうとしています。
Pythonでunittestを実行すると
python -m unittest discover tests
以下のようなエラーメッセージが出てしまいますが解決法が不明です。
発生している問題・エラーメッセージ
admin$ python -m unittest discover tests
usage: python -m unittest [-h] [--env ENV]
python -m unittest: error: unrecognized arguments: discover tests
E
======================================================================
ERROR: test_foo (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: test_foo
Traceback (most recent call last):
File "/Users/admin/.pyenv/versions/3.6.3/lib/python3.6/unittest/loader.py", line 428, in _find_test_path
module = self._get_module_from_name(name)
File "/Users/admin/.pyenv/versions/3.6.3/lib/python3.6/unittest/loader.py", line 369, in _get_module_from_name
__import__(name)
File "/Users/admin/Desktop/ppp/tests/test_foo.py", line 2, in <module>
from ppp import ppp
File "/Users/admin/Desktop/ppp/ppp/ppp.py", line 15, in <module>
main()
File "/Users/admin/Desktop/ppp/ppp/ppp.py", line 13, in main
ppp = PPP()
File "/Users/admin/Desktop/ppp/ppp/ppp.py", line 8, in __init__
args = parser.parse_args()
File "/Users/admin/.pyenv/versions/3.6.3/lib/python3.6/argparse.py", line 1733, in parse_args
self.error(msg % ' '.join(argv))
File "/Users/admin/.pyenv/versions/3.6.3/lib/python3.6/argparse.py", line 2389, in error
self.exit(2, _('%(prog)s: error: %(message)s\n') % args)
File "/Users/admin/.pyenv/versions/3.6.3/lib/python3.6/argparse.py", line 2376, in exit
_sys.exit(status)
SystemExit: 2
----------------------------------------------------------------------
Ran 1 test in 0.000s
該当のソースコード
本体
import argparse
class PPP(object):
def __init__(self):
parser = argparse.ArgumentParser()
parser.add_argument('--env', help='argparse test')
args = parser.parse_args()
def test_say(self):
return 'test'
def main():
ppp = PPP()
main()
テストケース
from unittest import TestCase
from ppp import ppp
class TestPPP(TestCase):
def test_say(self):
this_ppp = ppp.PPP()
self.assertEqual('test', this_ppp.test_say())
補足情報(言語/FW/ツール等のバージョンなど)
- python3.5系
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
まだ回答がついていません
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.37%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正の依頼
quickquip
2017/12/18 09:21
エラーになる理由は理解できるけれども、どう直していいか、あるいはどうするのが普通なのかがわからないという質問でしょうか
owen112
2017/12/18 12:34
説明不足ですいません。 pythonを使ってPythonでコマンドラインツールを作ろうとしているのですが、 コマンドラインツールは引数が必要そうなので、今回は今回はargparseを使っています。 全部お見せできないのですが、あくまでサンプルですが 本体側にargparseを使っているとtestunitが正常できないみたいですが、エラーを出さない方法を知りたいです。