سؤال

أحاول إنشاء مستند مع وهمية من الوظيفة التي تقع في وحدة منفصلة ويتم استيرادها كعلوف

from foomodule import foo

def bar():
    """
    >>> from minimock import mock
    >>> mock('foo', nsdicts=(bar.func_globals,), returns=5)
    >>> bar()
    Called foo()
    10
    """
    return foo() * 2


import doctest
doctest.testmod()

Foomodule.py:

def foo():
    raise ValueError, "Don't call me during testing!"

هذا فشل.

إذا قمت بتغيير الاستيراد إلى استيراد Foomodule.واستخدام foomodule.foo. في كل مكان ثم يعمل.

ولكن هل هناك أي حل للسخرية وظيفة المستوردة الطريق أعلاه؟

هل كانت مفيدة؟

المحلول 2

أخيرا، اكتشف أن هذه كانت مشكلة في إصدار الجذع من Minimock. يؤدي واحد مستقرة واحدة كما هو متوقع.

نصائح أخرى

لقد قابلت للتو أحد الأسباب الكثيرة التي تجعلها الأفضل أبدا لاستيراد كائن من "ضمن" الوحدات النمطية - الوحدات فقط (ربما من داخل الحزم). لقد جعلنا جزء القاعدة من إرشادات النمط لدينا في Google (نشر هنا) وأنا أوصي بحرارة ذلك لكل مبرمج بيثون.

القول، ما تحتاج إلى القيام به هو أخذ Foomodule.foo الذي استبداله للتو بسخرية وعصا به في الوحدة الحالية. لا أتذكر ما يكفي من داخلي داخلي لتأكيد ما إذا كان

   >>> import foomodule
   >>> foo = foomodule.foo

سوف يكفي لذلك - اعطيه محاولة، وإذا لم يكن العمل، فقم بدلا من ذلك

   >>> import foomodule
   >>> import sys
   >>> sys.modules[__name__].foo = foomodule.foo

نعم، إنها فوضى، لكن سبب تلك الفوضى هي أن المظهر البريء from foomodule import foo - جذل هذا، وسوف تكون حياتك أكثر بساطة وأكثر إنتاجية ؛-).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top