¿Cuál es el marco?
Marco (marco) o parte reutilizable del diseño del sistema de la totalidad,
el bastidor se utiliza para resolver los problemas de organización y control código de operación.
Cuando escribimos scripts automatizados, a menudo es necesario leer el fichero de configuración, leer archivos de datos, solicitudes de envío, la tala, la conexión de base de datos y comparar datos. Cada secuencia de comandos reescribir todos los diversos métodos no sólo es una gran carga de trabajo y propenso a errores. Así que necesitamos un método para extraer el público, empaquetado como módulos separados, el método común en la bolsa. Además de los archivos de configuración, archivos de datos, registros, etc. También necesita para mantener clasificado en otra carpeta. Este paquete de scripts y archivos de configuración, y cómo las organizaciones de diseño de métodos públicos llamados marco.
Mientras tanto, además de un marco general, sino también para proporcionar un control completo de la operación fuera de los archivos de código de organización y configuración. Por ejemplo la ejecución por lotes, el módulo de ejecución parcial, generar informes, gestión de excepciones y similares.
Se resume en los siguientes tres puntos:
- método del paquete del público
- código y los archivos de configuración de la organización
- control de ejecución
¿Cuál es el marco de pruebas?
Una secuencia de comandos de prueba completo (casos de uso) generalmente comprende los siguientes pasos:
- Ambiental listo o cheque
- La ejecución de las operaciones comerciales
- resultados de aserción
- Descontaminación del medio ambiente
Por lo general, el marco de ensayo también lleva a cabo mediante los casos de carga, la ejecución por lotes, un anormales funciones de control y de salida de resultados. marco de pruebas de base proporciona un control único general la función ejecutiva.
Prueba de marco debe tener las características
- Facilidad de uso: los casos de uso de escritura, la ejecución de casos de uso, generación de informes y fácil posicionamiento problema
- Robustez: estable, como mecanismo de tiempo de espera
- Escalabilidad: Plug
- Flexibilidad: tejido Flexibilidad o realizarse con casos, la función del accesorio (y un rango diferente de la configuración de tearDown), etc.
- Personalización: desarrollo secundario conveniente
unittest, PYtest, nariz, marco robot 简介
- unittest: Python viene, el marco más unidad básica de pruebas
- nariz: basada unittest-desarrollo, la facilidad de uso es bueno, hay muchos plug-ins
- PYtest: unittest desarrollo basado también, la facilidad de uso es bueno, la información más detallada, una serie de plug-ins
- marco robot: un marco de pruebas basado en palabras clave basada en el lenguaje Python, no es la interfaz, completamente funcional, auto-informe y log clara y hermosa
proyecto | prueba de unidad | nariz | PYtest | marco robot |
---|---|---|---|---|
Casos escritos | Heredar la clase unittest.TestCase necesita organizar una amplia gama de afirmaciones TestSuite | Para el principio del método de ensayo | Ese es el principio del método de ensayo | Robot puede dar formato de archivo de texto |
actuador | Escriba su propia run_all_tests + Conoce + CommandParser + ... | nosetests ... | py.test ... | pybot ... |
Ellos se encontraron con Discover | apoyo | apoyo | apoyo | apoyo |
Saltar caso de uso | unittest.skip () unittest.skipIf () aumento uniitest.SkipTest | de importación nose.plugins.skip SkipTestraise SkipTest | @ Pytest.mark.skipif (condición) @ pytest.mark.xfail | - |
accesorios | Setup / tearDown @ classmethodsetUpClass ... | apoyo | @ Pytest.fixture (session = "sesión", autouse = True) alcance accesorio: función, módulo, sesión, autouse = True hace la función por defecto de ejecución | [Configuración] ... [desmontaje] ... |
Ejemplo de etiqueta con las etiquetas | Con unittest.skip () + comandParser lograr | attrib 标签 de importación nose.plugins.attrib attr attr @ (velocidad = 'lento') def test_big_download (): Paso de $ nosetests velocidad lenta -a = | @ Pytest.mark.webtest una marca personalizada, de la siguiente manera, y luego py.test -v -m webtest marca de carrera sólo la función de webtest, py.test -v -m "no webtest" para ejecutar el webtest sin marcar | [Etiquetas] level1pybot prueba -i / - incluir tagName C: \ TF-Testpybot -e / - exculde level1 * .robot 排除 |
mecanismo de tiempo de espera de tiempo de espera | Para lograr su propio | de nose.tools pase time.sleep (2): Tiempo de timedimport importación @ temporizado (1) def test_lean_5 () | pip instalar [email protected] (60) 或 PYtest --timeout = 300 | [Tiempo de espera] 3 segundos |
parametrización | En combinación con el uso de DDT | En combinación con el uso de DDT | @ Pytest.mark.parametrize ( "a, b, que se espera", testdata) def test_timedistance_v0 (a, b, que se espera): diff = a - diff bassert == esperado | [Plantilla] 1 2 3 |
informe | HTMLTestRunner | pip instalar nariz htmloutput - con --html-html-file = | pip instalar -U-PYtest htmlpy.test --html =. / report.html | El apoyo, la generación automática de forma predeterminada |
log log | Para lograr su propio | --nologcapture no utilizar registro - registro-format = formato de registro formato de visualización de uso personalizada --logging-DATEFMT = formato de clase similares anteriormente, varios formatos de fecha --logging-filter = Filtro de registro del filtro, no se utiliza por lo general , no puede centrarse en --logging-claras manipuladores pueden no estar preocupado por la definición del nivel --logging-level = inicio de sesión predeterminado | PYtest test_add.py --resultlog =. / log.txtpytest test_add.py --pastebin = all | El apoyo, la generación automática de forma predeterminada |
Los ejemplos se enumeran solamente a cobro revertido de sólo | no | nosetests --collect-onlynosetests -v --con-id | --collect sólo -v | - |
Por peso Ejemplo failed ejecutar fallos vuelva a ejecutar | no | nosetests -v --failed | pip instalar -U [email protected] (repeticiones = 5) py.test --rerun = 3 | robot --rerunfailed |
comparación inicial | no | no | no | no |
complicado por | transformación unittest usando corrutinas concurrentes, o utilizar el grupo de subprocesos + Hermosa Informe | Línea de comandos concurrentes | PYtest-xdist: para distribuir la CPU no utilizado y de la máquina | Línea de comandos concurrentes |
informe xml | no | --with-xUnit | --xunit-file = ... / PYtest + Allure | --junit-xml = |
El selenio ayuda | no | no | PYtest-selenio | robotframework-seleniumlibraryrobotframwork-selenium2library |
Resumen: En general, base unittest de comparación, el desarrollo secundario de conveniente y adecuado para su uso experto; PYtest / nariz más rápido y más conveniente, más eficiente, y blanco para la búsqueda de la eficiencia de la empresa; marco robot debido a la apariencia de la interfaz y los informes, fácil un mejor uso, flexibilidad y personalización ligeramente peor.