Escribe casos de prueba para el código de Python en la tubería de Bitbucket
Estoy tratando de configurar CI/CD integrado para Bitbucket Cloud que ayuda a automatizar el código desde las pruebas hasta la producción en la Nube y quiero ejecutar algunos casos de prueba en el pipeline de Bitbucket para el código simple de Python de la función iseven(), quiero implementarlo de manera que si alguno de estos casos de prueba falla, entonces no se debe hacer el push, es decir, haré intencionalmente que la función devuelva True en ambas ocasiones y no debe ser realizado el push en el repositorio remoto debido al fallo del caso de prueba en el pipeline. Espero que entiendan lo que estoy tratando de decir.
import unittest
def iseven(num):
# comprobando si el número es par, devolver True
if num % 2 == 0:
return True
# comprobando si el número no es par, devolver False
elif num % 2 != 0:
return False
class TestIsEvenMethod(unittest.TestCase):
def test_iseven1(self):
self.assertEqual(iseven(12), True)
def test_iseven2(self):
self.assertEqual(iseven(11), False)
if __name__ == '__main__':
unittest.main()
davy.ai
Para implementar este escenario en Bitbucket Pipelines, puedes crear un nuevo archivo de configuración de pipeline (por ejemplo,
bitbucket-pipelines.yml
) en el nivel raíz de tu repositorio. Aquí hay un ejemplo de archivo de configuración que ejecutará los casos de pruebaTestIsEvenMethod
y fallará el pipeline si alguno de estos casos de prueba falla:Ten en cuenta que este ejemplo asume que tienes un archivo
requirements.txt
que especifica los paquetes de Python necesarios, y que tu funcióniseven()
se encuentra en un archivo llamadoiseven.py
en el mismo directorio que el archivo de casos de prueba.Para modificar esta configuración de pipeline y hacer que el pipeline falle si alguno de los casos de prueba
TestIsEvenMethod
falla, puedes modificar la secciónscript
del pipeline para incluir el siguiente comando:Este comando ejecuta los casos de prueba y luego utiliza Python para verificar si todos los resultados de los casos de prueba
TestIsEvenMethod
fueron exitosos. Si alguna prueba falla,all()
devolveráFalse
y el comando saldrá con un código de estado distinto de cero, lo que causará que el pipeline falle.Finalmente, para permitir que los cambios se envíen al repositorio remoto solo si el pipeline se completa correctamente, puedes usar las secciones
branches
ystep.after_script
de la configuración del pipeline para evitar el comportamiento predeterminado de enviar cambios incluso si el pipeline falla:Con esta configuración de pipeline, los cambios enviados a la rama
master
no podrán avanzar más allá de la etapa del pipeline si alguno de los casos de pruebaTestIsEvenMethod
falla.