J'essaye cela pendant près de deux heures maintenant, sans chance.
J'ai un module qui ressemble à ceci: p> plus tard dans le code: P> >>> ao.shorturl.zope.component # why?!
<module ...>
3 Réponses :
juste monkeyychatch dans le au lieu du Notez également que si ce que vous utilisez, au lieu de intégré code> Votre propre version de
__ importer __ code> - il peut élever tout ce que vous souhaitez quand il reconnaît qu'il est appelé sur les modules spécifiques pour lesquels vous souhaitez erreurs maquillées. Voir The Docs pour un détail copieux. Grossièrement:
... code>, vous pouvez connecter
nom == 'zope.component' code> ou organiser des choses Plus de flexibilité avec un rappel de votre choix qui peut rendre les importations à soulever de la demande dans différents cas, en fonction de vos besoins de test spécifiques, sans vous demander de coder plusieurs
__ importer __ code> -alike fonctions; -). P >
importer zope.commonent code> ou
de zope.component importer quelque chose code>, est
du composant d'importation de Zope code>, le nom
code> sera alors
'zope' code> et
'' composant ' code> sera alors le seul élément du
from Llist < / Code>. P>
__ Importer __ code> Fonction Dites que le nom à l'importation est
intégré code> (comme Dans Python 3), mais en fait, vous avez besoin
__ cométine __ code> - J'ai modifié le code ci-dessus afin qu'il fonctionne de toute façon. p> p>
Ah merci! Pour une raison quelconque, j'ai essayé de faire def __import __ () code>, mais je ne l'ai pas attribué à
intégré .__ importer __ code>; que je suis bête. Intéressant, je lisais juste votre réponse ici: Stackoverflow.com/Questtions/2216828/... - Pensez-vous que cela faciliterait cette situation si je n'importerait pas la querité de mon module portée?
@Atttila, si vous avez fait de zope importateur composant code>, puis utilisé
composant.Quéryutilité code>, il faciliterait la tâche, par exemple, d'utiliser la vraie chose de l'heure, et une version moquée / fausse à d'autres moments. Comme je l'ai écrit dans cette réponse, je le recommande comme une chose générale, et cela fait partie de la manière dont nous codons Python sur Google (parfois une clause code> comme code> pour raccourcir le nom des importations est justifiée, bien sûr , mais cela ne change pas la sémantique).
Si vous faites à partir du composant d'importation Zope CODE>, BTW, votre
__ Importer __ code> -alike fonctionnera
'zope' code> comme nom code> > argument, et
'composant' code> en tant qu'élément de l'argument code> from llist code> (le seul, sauf si vous ne le faites
de zope importe ceci, ce qui, le composant code > ou similaire ;-); alors assurez-vous de déclencher en conséquence.
Merci pour la recommandation, j'adopterai ce style de codage, car il semble être utile dans des cas comme celui-ci. Cependant, je viens de me rendre compte que vous ne répondiez pas pour moi (cela fonctionne sur la console interactive, si je substitue intégré code> avec
__ intégré __ code>.)
C'est intégré code> - j'ai orthographié juste dans le texte mais faux dans le code. Édition à réparer.
Ok, c'est bizarre. Importation Construits Code> lève un
IMPORTERROR CODE> ON
PYTHON2. {5.4,6.4,7A4 +} CODE>, mais cela fonctionne bien dans
python3. {1.1, 2a0} code>. 2.5, 2.6 et 3.1 sont fournis par Gentoo Ebuilds, mais 2,7 et 3.2 sont mes propres bâties du coffre. Comment se fait-il manquer le module code> intégré code>?
Cependant, selon Ce , vous avez raison, il devrait être Construits CODE>.
Importation __builtine __ Code> Fonctionne dans 2.5 - NO
S code>, "Nom magique" (contradicitant les docs). Éditer à nouveau pour réparer.
Génial, maintenant cela fonctionne bien dans la console; Mais ne fonctionnant toujours pas lorsqu'il est utilisé comme doctest dans un fichier texte. Quoi qu'il en soit, cela pourrait être un zope.tsting code> problème (bien que pas sûr). En attendant, j'ai essayé ceci: Classe Nozope (Objet): DEF Find_Module (Self, Pleinname, Chemin): Si Full Name.Startswith ('Zope'): Soulevez ImporterRor Import Sys.Path.insert (0, Nozope ( )) Et cela fonctionne bien pour l'espace de noms de la suite de tests (= pour toutes les importations dans
shorturl.txt code>), mais il n'est pas exécuté dans mon module principal,
ao.shorturl code >. Pas même lorsque je
recharger () code> it. Une idée pourquoi?
Hélas, Zope est profond, sombre et mystérieux (je pense qu'il joue des astuces avec des crochets d'importation et autres, pour votre "commodité"), donc je ne sais pas vraiment (mais je sais que vous devriez éditer votre q pour inclure ce code pour inclure ce code Donc, vous pouvez le rendre lisible - dans le commentaire, il est essentiellement illisible en raison du manque de formatage, et il n'y a pas de solution, sauf le déplacer vers le Q! -).
Ne sois pas si mal. Zope n'est pas sombre, c'est beau. Mais c'est toujours profond et mystérieux :) Alors alors, une dernière question. Connaissez-vous une autre recette de construction pour les tests en cours d'exécution, autres que Zope.Testing? Quelque chose avec un bon soutien de la couverture.
Dark and Beautiful n'est pas Antonymes, CFR darkisbeautiful.in ! Je n'ai aucune expérience pratique avec la construction, ne pas les recettes de Buildout.org/docs/ récipeliste.html aide?
Pas vraiment, puisque la plupart (sinon toutes) des tests du Zope World s'appuient sur zope.tsting code>. Cependant, il peut être facile d'écrire une recette pour un autre test de test, s'il existe un. Je vais essayer peut-être. Quoi qu'il en soit, merci pour toute votre aide Alex et pour garder ce fil vivant!
C'est ce que j'ai jeté dans mes instances.
Il utilise PEP-302" Nouveaux crochets d'importation ". (AVERTISSEMENT: Le document Pep-302 et les notes de publication plus concises que j'ai liées ne sont pas exactement précises em>.) P> i utilisent si le module a déjà été importé (comme dans mon cas, car il est donc nécessaire de la simuler à l'encontre), il est nécessaire de le supprimer de Sys.Modules avant de faire le < Code> recharger code> sur le module dépendant. p> où le code à l'intérieur de pif.index ressemble à: p> Pour répondre à la question sur la raison pour laquelle le module nouvellement rechargé comporte des propriétés des anciennes et de nouvelles charges, voici deux exemples de fichiers. p> Le premier est un module la seconde est meta_path code> car c'est comme c'est tôt possible dans la séquence d'importation. P>
y code> avec un cas de défaillance d'importation. p>
x code> qui démontre comment le départ des poignées sur un module peut affecter ses propriétés lors de la rechargeée. < / p>
Génial, maintenant j'ai réussi à élever un importerror code>, qui est tout ce dont j'ai besoin. La chose intéressante est la suivante: si je recharge
ao.shorturl code>, et je ai
essayer: import zope.component, zope.interface; Sauf Importerror: Fallback () Code>, et je reçois le premier
importerror code> pour
zope.commonent code>, zope.interface sera toujours disponible dans ao.shorturl (ao.shorturl.zope.interface) b>. Pourquoi donc?
Je viens d'ajouter une section supplémentaire décrivant pourquoi cela se produit. tl; dr, vous devez del ao.shorturl code> avant votre
recharger code>.
Si cela ne vous dérange pas de changer votre programme lui-même, vous pouvez également mettre l'appel à l'importation dans une fonction et un correctif dans vos tests. P>