Tengo un problema en mis pruebas unitarias, no sé por qué, obtengo la siguiente pila:

    Traceback (most recent call last):
  File "novaapiclient_tests.py", line 11, in test_create_server
    nova = novaapiclient.NovaAPIClient()
TypeError: __init__() takes exactly 2 arguments (1 given)

Sigue mi código de prueba:

class TestFunction(unittest.TestCase):

    def setUp(self):
        self.nova = novaapiclient.NovaAPIClient()

    def test_create_server(self):
        self.setUp()
        lsbf = self.nova.lst_of_servers(self.nova.listServers())
        image = "3f9e6696-2ed2-4e06-ae16-c828062addbe"
        flavor = "m1.tiny"
        name = "testing_unit"
        self.nova.createServer(image, flavor, name)
        time.sleep(60)
        lsaf = self.nova.lst_of_servers(self.nova.listServers())
        if(len(lsbf) < len(lsaf)):
            assertTrue(True)
        else:
            assertTrue(False)


    def delete_server(self):
        self.setUp()
        serv_id = "13e0c3de-d736-47ec-bc22-3a794aa3e2a9"
        self.nova.deleteServer(serv_id)
        ls = self.nova.lst_of_servers(self.nova.listServers())
        j = 0
        fin = False
        while(j < 3 and not fin):
            time.sleep(75)
            for i in range(len(ls)):
                if(serv_id == str(ls[i])):
                    assertTrue(False)
                    break

                assertTrue(True)
                fin = True              
                break
            j += 1

Intenté crear un método init y cortar el "self" en los métodos, pero sigo imprimiendo el error.

-2
guisantogui 2 may. 2012 a las 18:34
1
¿Podemos ver novaapiclient? Esa es la clase con __init__() que espera más parámetros.
 – 
Silas Ray
2 may. 2012 a las 18:42
3
Como señala sr2222, le falta un argumento en el inicializador NovaAPIClient. Además, no es necesario llamar a self.setUp () manualmente. Si ejecuta la prueba con un corredor de prueba (como si ejecuta unittest.main()), la clase de configuración se llamará automáticamente.
 – 
Mark Hildreth
2 may. 2012 a las 18:43
De hecho, ¿no causaría eso que setUp() sea llamado dos veces, posiblemente con muy malas consecuencias?
 – 
Silas Ray
2 may. 2012 a las 18:44
Además, no puedo editarlo ahora, pero el comentario anterior debería decir "el método setUp se llamará automáticamente", no "la clase setUp".
 – 
Mark Hildreth
2 may. 2012 a las 20:43

1 respuesta

La mejor respuesta

El constructor novaapiclient.NovaAPIClient necesita recibir un argumento, pero no estás pasando ninguno.

En esta pregunta tuya, pasaste un argumento a novaapiclient.NovaAPIClient, así que supongo que necesitas hacer algo similar.

5
Community 23 may. 2017 a las 15:27