私はsimplejson
次のように読み、インポートのための別のSOの推奨事項を使用しています:
try:
import simplejson as json
except ImportError:
import json
ただし、「json モジュールの 1 つ」が実際にインポートされているかどうかを確認するために単体テストを作成しているときに、私自身の設計である円形の悪夢に悩まされています! /はぁ。
class AreAllModulesLoaded(unit.TestCase):
"""Test to make sure all modules are loaded"""
def test_json(self):
try:
self.assertTrue("simplejson" in sys.modules)
except:
try:
self.assertTrue("json" in sys.modules)
except AssertionError:
raise
このようなものはうまくいくと思いましたが、unittest.failUnless
orを調べると (両方を試しました)、失敗が発生し、テストが停止します ( の代わりにunittest.assertTrue
ロードするだけで失敗を引き起こしているため、失敗しています)...json
simplejson
私の意図した目標は、単体テストでjsonまたはsimplejsonのいずれかがロードされたことを確認することです。これについてどうすればよいですか?
アサーションの前に「真実」を捉え、「True」または「False」のみを渡すことを考えましたが、これはユニットテストの一部であるべきだと思ったからです。 -周り(それは私の意見です、多分あなたは違うと感じます)。たとえば、次のようなことを考えていました (python 風の疑似コード):
_simplejsonLoaded = "simplejson" in sys.modules
_jsonLoaded = "json" in sys.modules
self.assertTrue(_simplejsonLoaded or _jsonLoaded)
(私は正式な単体テストに慣れていないので、ここで何かおかしいと思われる場合はお知らせください)。
その他の情報:
- 私はPython 2.6を使用しています(仕事上の理由で、変更できません)
- Windows と Linux