Hasta ahora, todos los usos del firmware se especifican manualmente, ya sea como parámetros o como uso usefixtures
.
Si queremos que el firmware se ejecute automáticamente, podemos especificar los autouse
parámetros al definir .
Los siguientes son dos firmwares de cronometraje automático, uno para contar el tiempo de ejecución de cada función (alcance de la función) y el otro para calcular el tiempo total de prueba (alcance de la sesión):
# test_autouse.py
DATE_FORMAT = '%Y-%m-%d %H:%M:%S'
@pytest.fixture(scope='session', autouse=True)
def timer_session_scope():
start = time.time()
print('\nstart: {}'.format(time.strftime(DATE_FORMAT, time.localtime(start))))
yield
finished = time.time()
print('finished: {}'.format(time.strftime(DATE_FORMAT, time.localtime(finished))))
print('Total time cost: {:.3f}s'.format(finished - start))
@pytest.fixture(autouse=True)
def timer_function_scope():
start = time.time()
yield
print(' Time cost: {:.3f}s'.format(time.time() - start))
Tenga en cuenta que las siguientes dos funciones de prueba no utilizan firmware explícitamente:
def test_1():
time.sleep(1)
def test_2():
time.sleep(2)
Al realizar la prueba, puede ver que el firmware se ejecuta automáticamente y completa la tarea de sincronización:
$ pytest -s tests/fixture/test_autouse.py
============================= test session starts =============================
platform win32 -- Python 3.6.4, pytest-3.6.1, py-1.5.2, pluggy-0.6.0
rootdir: F:\self-repo\learning-pytest, inifile:
collected 2 items
tests\fixture\test_autouse.py
start: 2018-06-12 10:16:27
. Time cost: 1.003s.
. Time cost: 2.003s.
finished: 2018-06-12 10:16:30
Total time cost: 3.016s.
========================== 2 passed in 3.11 seconds ===========================