Python - Ayuda con pytest

 
Vista:
sin imagen de perfil

Ayuda con pytest

Publicado por Jose (3 intervenciones) el 18/10/2016 17:37:38
Bueenas, necesito ayuda con pytest.
El problema es este:

Escribir un programa que contenga una contraseña inventada, que le pregunte al usuario
la contraseña, y no le permita continuar hasta que la haya ingresado correctamente.

Modificar el programa anterior para que solamente permita una cantidad fija de intentos

El tema es que el programa lo escribo, pero a la hora de usar el pytest nose como hacerlo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
realpass = 'asdasd'
 
def verificacionA(pw):
    if pw != realpass:
        return 'Incorrecto'
        ingresar()
    else:
        return 'Correcta'
 
def test_verificacionA():
    assert verificacionA('Asd') == 'Incorrecto'
 
 
def verificacionB(pw):
    if pw != realpass:
        return 'Incorrecto'
        ingresar()
    else:
        print("Correcta")
        return 'Correcta'
 
def ingresar():
    pw = input("Ingrese contraseña: ")
    verificacionA(pw)
 
    i=1
    res = verificacionB(pw)
    while i <= 3:
        if res == 'Incorrecto':
            pw = input("Reintentar: ")
            verificacionB(pw)
            i=i+1
 
ingresar()

El error que recibo al usar el comando

$~ python3 -m pytest ejercicio.py

5a.py:34: in <module>
ingresar()
5a.py:23: in ingresar
pw = input("Ingrese contraseña: ")
/home/pc/.local/lib/python3.5/site-packages/_pytest/capture.py:444: in read
raise IOError("reading from stdin while output is captured")
E OSError: reading from stdin while output is captured
------------------------------- Captured stdout --------------------------------
Ingrese contraseña:
!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!!
=========================== 1 error in 0.12 seconds ============================


No entiendo a que se debe el error, si cuando no uso el pytest el programa funciona.

Disculpen si hay algo que no se entiende, es la primera vez que publico algo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda con pytest

Publicado por xve (1646 intervenciones) el 18/10/2016 19:06:11
Hola Jose, aquí te lo adjunto corregido...

Te faltaba poner el try: except: y definir la variable pw...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# -*- coding: utf-8 -*-
 
realpass = 'asdasd'
 
def verificacionA(pw):
    if pw != realpass:
        return 'Incorrecto'
        ingresar()
    else:
        return 'Correcta'
 
def test_verificacionA():
    assert verificacionA('Asd') == 'Incorrecto'
 
 
def verificacionB(pw):
    if pw != realpass:
        return 'Incorrecto'
        ingresar()
    else:
        print("Correcta")
        return 'Correcta'
 
def ingresar():
    pw=""
    try:
        pw = input("Ingrese contrasena: ")
    except:
        pass
    verificacionA(pw)
 
    i=1
    res = verificacionB(pw)
    while i <= 3:
        if res == 'Incorrecto':
            try:
                pw = input("Reintentar: ")
            except:
                pass
            verificacionB(pw)
            i=i+1
 
ingresar()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con pytest

Publicado por Jose (3 intervenciones) el 18/10/2016 20:04:14
Como que definirla? mi idea era que realpass sea una variable global como password

Y el try: except: se usa cada vez que use un input para poder usar el pytest?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda con pytest

Publicado por xve (1646 intervenciones) el 18/10/2016 22:01:01
Si, pruebalo... si lo quitas te dará error!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con pytest

Publicado por Jose (3 intervenciones) el 18/10/2016 22:19:00
Si, lo probé y funciono, muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar