6
votes

Nom 'Self' n'est pas défini lors de la tâche unitest?

EDIT STRUT>

J'ai donc réessayé, avec un nouveau fichier appelé test2.py code> et ça fonctionne. J'ai emballé repoman code> et test.py code> est dans le dossier src code>. J'ai modifié test.py code> après avoir créé et installé mon Egg Repoman Code>. Je pense que c'est le problème. Mais merci pour l'aide. Vous pensez que c'est la raison exacte? P>


xxx pré>

exécuté python test.py code> i Obtenir cette erreur: p>

Traceback (most recent call last):
  File "test.py", line 7, in <module>
    class TestWriteFile(unittest.TestCase):
  File "test.py", line 19, in TestWriteFile
    self.assertTrue(r.ok)
NameError: name 'self' is not defined


7 commentaires

Cela semble difficile à croire. Êtes-vous sûr à 100% de votre code exact?


@DavidHeffernan oui. C'est le code exact. J'ai donc réessayé, avec un nouveau fichier appelé test2.py et cela fonctionne. J'ai emballé repoman et test.py est dans le fichier SRC. J'ai modifié test.py après avoir créé et installé mon repoman oeuf. Je pense que c'est le problème. Mais merci pour l'aide. Est-ce que vous pensez que c'est un problème? Si c'est en réalité le problème, je modifierais mon titre.


Non, je ne crois pas que c'est votre code actuel. Si Self.AssertTtrue (R.OK) échoue alors la ligne avant aussi. Par conséquent, self.asserttrue (r.ok) ne sera pas exécuté.


@Cpplearner. Je ne pense pas que cela ait quelque chose à voir avec l'œuf.


Je suis très positif que c'était mon code. J'ai vérifié mon orthographe plusieurs fois avant que je sois venu ici (je l'ai fait avant ... Alors oui ...). Une raison possible que j'ai pensé à modifier le test.py après avoir installé le paquet d'œufs est mauvais.


@Stevenrumbalski ouais. C'est possible pas la cause. C'est pourquoi je ne comprends pas. J'ai 108% sûr qu'il est le même code exact ..


@Cpplearner: ne peut pas être. Cette question n'a plus aucun sens, à moins que vous ne puissiez reproduire l'erreur.


5 Réponses :



2
votes

Ceci est une reformulation du commentaire de David Heffernan.

Le code que vous avez posté ne peut pas être la cause de cette trace. p>

Considérez ces deux lignes à partir de votre code: P>

r = requests.get("http://192.168.1.138:6666/scm/", auth=(self.username, self.password))
self.assertTrue(r.ok)


0 commentaires

8
votes

Je ne suis pas sûr d'où vient le problème - qu'il s'agisse d'une erreur de copie ou du mauvais test.py est en cours d'exécution [mise à jour: ou un problème mixte tabs-onglets-and-espaces, je ne peux jamais comprendre quand ces se faire pavillon et quand ils ne le font pas] - mais la cause première est certainement une erreur d'indentation.

Notez que le message d'erreur est P>

~/coding$ cat test_bad_indentation.py
import unittest

class TestWriteFile(unittest.TestCase):
    def test(self):
        """
        Doc goes here.
        """
    self.assertTrue(1)

if __name__ == '__main__':
    unittest.main()

~/coding$ python test_bad_indentation.py 
Traceback (most recent call last):
  File "test_bad_indentation.py", line 3, in <module>
    class TestWriteFile(unittest.TestCase):
  File "test_bad_indentation.py", line 8, in TestWriteFile
    self.assertTrue(1)
NameError: name 'self' is not defined


0 commentaires

0
votes

C'est une vieille question, mais je pensais ajouter mes deux cents car il n'a pas été mentionné ici. Je suis d'accord avec d'autres qu'il existe un type d'erreur d'orthographe dans le code d'origine. Regardez attentivement ce code:

import unittest
import requests

class TestWriteFile(unittest.TestCase):
    def setup(self):
        self.username = 'dummy'

    def test_scm_permission(self):
        r = requests.get("http://192.168.1.138:6666/scm/", auth=(self.username, self.password))
        self.assertTrue(r.ok)


0 commentaires

0
votes

J'ai eu le même problème, mais pas avec soi-même. C'était une variable régulière, définissait la ligne avant l'heure de l'erreur.

C'était apparemment dû ... des tabulations et des espaces de mixin.

J'ai remplacé tous les onglets de 4 espaces et le problème a disparu.

Pour une raison indéterminée, au lieu de l'erreur d'indentation traditionnelle, j'avais celui-ci.


0 commentaires