unable pyedit plugin plug oxygen org luna for development python unit-testing pydev

pyedit - Prueba continua de unidades con Pydev(Python y Eclipse)



pydev eclipse luna install (6)

Ejecuto la prueba a mano la primera vez ( Ejecutar> Ejecutar como> prueba de unidad de Python ). Después de eso, uso Ctrl+Shift+F9 para guardar los archivos y ejecutar las pruebas, en lugar de guardar con Ctrl+S y esperar que ocurra algo de magia.

La Ctrl+Shift+F9 relanza la última configuración de ejecución.

Descargo de responsabilidad : soy nuevo en Eclipse y en PyDev, por lo que puedo sugerir algo tonto / obvio / incorrecto

¿Hay alguna forma de integrar las pruebas de unidad de fondo con el entorno de Pydev Eclipse?

Las pruebas de mi unidad funcionan bien, pero me gustaría integrarlas para que se ejecuten en segundo plano en función de los cambios en el archivo fuente (por ejemplo, con nose) e integrar el resultado a Eclipse (estoy pensando en una gran X roja cuando fallan las pruebas con una consola) y vista de registro de seguimiento).

No, un símbolo del sistema que ejecuta la nariz en el costado no cuenta.

He tenido esta integración de Eclipse al desarrollar cosas RoR.

Gracias,

Tal.

EDITAR: Mira el nuevo Pydev (1.6.4) http://pydev.org/manual_adv_pyunit.html


Esta característica se ha agregado a PyDev 2.0.1 con una opción para reiniciar las pruebas en la última ejecución de prueba cada vez que cambia un archivo de Python, con una opción adicional para volver a ejecutar solo los errores, aunque ejecutará el conjunto de pruebas completo si no Se encontraron errores, ya que la idea es que resuelva sus errores y, cuando todo pase, se realiza un lanzamiento final para todo el conjunto (luego puede pasar a otra tarea).

La construcción nocturna actual tiene esta característica incorporada.


Me acabo de dar cuenta de que PyDev tiene un soporte de scripting bastante poderoso. Lamentablemente, no tengo tiempo para hacerlo todo por ti (pero si completas esto, publícalo aquí :)

Si crea un archivo llamado pyedit_nose.py que se ve así en una carpeta que de otro modo pyedit_nose.py vacía:

assert cmd is not None assert editor is not None if cmd == ''onSave'': from java.lang import Runtime from java.io import BufferedReader from java.io import InputStreamReader from org.eclipse.core.resources import ResourcesPlugin from org.eclipse.core.resources import IMarker from org.eclipse.core.resources import IResource proc = Runtime.getRuntime().exec(''ls -al'') extra_message = BufferedReader(InputStreamReader(proc.inputStream)).readLine() r = ResourcesPlugin.getWorkspace().getRoot() for marker in r.findMarkers(IMarker.PROBLEM, False, IResource.DEPTH_INFINITE): if marker.getAttribute(IMarker.MESSAGE).startsWith("Some test failed!"): marker.delete() for rr in r.getProjects(): marker = rr.createMarker(IMarker.PROBLEM) marker.setAttribute(IMarker.MESSAGE, "Some test failed! " + extra_message) marker.setAttribute(IMarker.PRIORITY, IMarker.PRIORITY_HIGH) marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR)

y configure Preferences-> PyDev-> Scripting Pydev para que apunte a este directorio obtendrá todos los proyectos en su área de trabajo marcados con un error cada vez que se guarde un archivo.

Al ejecutar una secuencia de comandos que devuelve los resultados de la prueba en un formato fácil de analizar en lugar de ls y analizar el resultado, debería poder poner sus marcadores en los lugares correctos.

Vea esto para algunos puntos de partida:

  • Scripting Jython en Pydev
  • IMarker es lo que representa un marcador.
  • IResource es a lo que le IResource sus marcadores. Pueden ser espacios de trabajo, proyectos, archivos, directorios, etc. resource.createMarker(IMarker.PROBLEM) crea un marcador de problema.
  • IProject es un tipo de IResource que representa un proyecto. Use el método members() para obtener los contenidos.

Mejoré el script "entrometido" para crear documentación automáticamente y ejecuta pruebas continuamente. Nada estelar, pero hace el trabajo. Publicarlo aquí porque el enlace original se cayó. A diferencia del script nosey original, este escanea el directorio recursivamente y permite buscar múltiples patrones.

import os import os.path import sys import stat import time import subprocess from fnmatch import fnmatch def match_patterns(pathname, patterns): """Returns True if the pathname matches any of the given patterns.""" for pattern in patterns: if fnmatch(pathname, pattern): return True return False def filter_paths(pathnames, patterns=["*"], ignore_patterns=[]): """Filters from a set of paths based on acceptable patterns and ignorable patterns.""" result = [] if patterns is None: patterns = [] if ignore_patterns is None: ignore_patterns = [] for path in pathnames: if match_patterns(path, patterns) and not match_patterns(path, ignore_patterns): result.append(path) return result def absolute_walker(path, recursive): if recursive: walk = os.walk else: def walk(path): return os.walk(path).next() for root, directories, filenames in walk(path): yield root for directory in directories: yield os.path.abspath(os.path.join(root, directory)) for filename in filenames: yield os.path.abspath(os.path.join(root, filename)) def glob_recursive(path, patterns=["*"], ignore_patterns=[]): full_paths = [] for root, directories, filenames in os.walk(path): for filename in filenames: full_path = os.path.abspath(os.path.join(root, filename)) full_paths.append(full_path) filepaths = filter_paths(full_paths, patterns, ignore_patterns) return filepaths def check_sum(path=''.'', patterns=["*"], ignore_patterns=[]): sum = 0 for f in glob_recursive(path, patterns, ignore_patterns): stats = os.stat(f) sum += stats[stat.ST_SIZE] + stats[stat.ST_MTIME] return sum if __name__ == "__main__": if len(sys.argv) > 1: path = sys.argv[1] else: path = ''.'' if len(sys.argv) > 2: command = sys.argv[2] else: command = "make -C docs html; bin/python tests/run_tests.py" previous_checksum = 0 while True: calculated_checksum = check_sum(path, patterns=[''*.py'', ''*.rst'', ''*.rst.inc'']) if calculated_checksum != previous_checksum: previous_checksum = calculated_checksum subprocess.Popen(command, shell=True) time.sleep(2)

Espero que esto ayude.

=)


Pydev tiene alguna integración de prueba de unidad, pero eso es solo una configuración de ejecución ... así que ...

Esta no es una manera muy elegante, pero si usted:

  1. Habilitar Proyecto-> Construir Automáticamente
  2. En las propiedades de su proyecto, agregue un nuevo constructor de tipo Programa
  3. Configúrelo para ejecutar sus pruebas y seleccione ''durante construcciones automáticas''

Entonces, al menos obtendrá algo que envía los resultados de la prueba a la consola en recursos guardados.


Yo uso Nosy (disponible en pypi):

Ejecute la herramienta de descubrimiento y ejecución de pruebas nasales siempre que se cambie un archivo fuente.