Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
script:python:new:api [2013/09/26 19:43] alfred [UnitTesting] |
script:python:new:api [2020/05/09 09:25] (actual) |
||
|---|---|---|---|
| Línea 201: | Línea 201: | ||
| from argparse import ArgumentParser | from argparse import ArgumentParser | ||
| parser = ArgumentParser() | parser = ArgumentParser() | ||
| - | parser.add_argument('-f', '--foo', help='foo help') | + | parser.add_argument('-f', '--foo', dest='foo', help='foo help') |
| args = parser.parse_args() | args = parser.parse_args() | ||
| print args.foo | print args.foo | ||
| </code> | </code> | ||
| - | |||
| ''add_argument'' permite, entre otros, los siguientes parámetros: | ''add_argument'' permite, entre otros, los siguientes parámetros: | ||
| * ''name'' o ''flags'': un nombre o lista de opciones, ejemplos: ''<nowiki>foo, -f, --foo</nowiki>'' | * ''name'' o ''flags'': un nombre o lista de opciones, ejemplos: ''<nowiki>foo, -f, --foo</nowiki>'' | ||
| Línea 491: | Línea 490: | ||
| c1.close() # cerramos la primera conexión | c1.close() # cerramos la primera conexión | ||
| </code> | </code> | ||
| + | Al hacer el connect podemos conectar con una DB ficticia en memoria usando ''":memory:"''. | ||
| === Insertar una fecha === | === Insertar una fecha === | ||
| <code python> | <code python> | ||
| Línea 507: | Línea 506: | ||
| db.commit() | db.commit() | ||
| </code> | </code> | ||
| - | |||
| ==== Datos binarios ==== | ==== Datos binarios ==== | ||
| Línea 667: | Línea 665: | ||
| format=%(asctime)s - %(name)s - %(levelname)s - %(message)s | format=%(asctime)s - %(name)s - %(levelname)s - %(message)s | ||
| datefmt= | datefmt= | ||
| + | </code> | ||
| + | |||
| + | === Para mostrar información de la excepción === | ||
| + | <code python> | ||
| + | try: | ||
| + | open('/path/to/does/not/exist', 'rb') | ||
| + | except (SystemExit, KeyboardInterrupt): | ||
| + | raise | ||
| + | except Exception, e: | ||
| + | logger.error('Failed to open file', exc_info=True) | ||
| </code> | </code> | ||
| Línea 674: | Línea 682: | ||
| logging.getLogger().disabled = True | logging.getLogger().disabled = True | ||
| </code> | </code> | ||
| + | |||
| + | |||
| ==== Imports dinámicos ==== | ==== Imports dinámicos ==== | ||
| A partir del módulo ''imp'' podemos realizar imports por código. Este módulo tiene funciones como... | A partir del módulo ''imp'' podemos realizar imports por código. Este módulo tiene funciones como... | ||
| Línea 691: | Línea 701: | ||
| fname = path.basename(obs_path)[:-3] | fname = path.basename(obs_path)[:-3] | ||
| return load_source(fname, mpath) | return load_source(fname, mpath) | ||
| + | </code> | ||
| + | |||
| + | === Otra forma de importar === | ||
| + | Si la aplicación se abre desde, por ejemplo, otro path. | ||
| + | <code python> | ||
| + | import sys | ||
| + | from os.path import abspath | ||
| + | sys.path.append(abspath('.')) | ||
| + | from backend.css.tasks import parse_grammar | ||
| </code> | </code> | ||
| ==== UnitTesting ==== | ==== UnitTesting ==== | ||
| Línea 702: | Línea 721: | ||
| <code> | <code> | ||
| $ python -m unittest discover | $ python -m unittest discover | ||
| + | </code> | ||
| + | * Otras formas de ejecutar tests: | ||
| + | <code> | ||
| + | $ python -m unittest test_random | ||
| + | $ python -m unittest test_random.TestSequenceFunctions | ||
| + | $ python -m unittest test_random.TestSequenceFunctions.test_shuffle | ||
| </code> | </code> | ||
| * Las comprobaciones que se pueden hacer son: | * Las comprobaciones que se pueden hacer son: | ||
| Línea 708: | Línea 733: | ||
| * ''assertTrue(expression)'' y ''assertFalse(expression)'' | * ''assertTrue(expression)'' y ''assertFalse(expression)'' | ||
| * ''assertIsInstance(object, class)'' | * ''assertIsInstance(object, class)'' | ||
| - | * | + | |
| <code python> | <code python> | ||
| ''' | ''' | ||