async def test_elapsed_timer(): with ElapsedTimer() as timer: assert timer.elapsed.total_seconds() == pytest.approx(0, abs=0.05) await asyncio.sleep(0.1) await asyncio.sleep( 0.1 ) # test to ensure time spent after timer exits isn't accounted for. assert timer.elapsed.total_seconds() == pytest.approx(0.1, abs=0.05)
def __init__(self, **kwargs): data = { 'body': {}, 'headers': {}, 'path': {}, 'query': {}, } data['header'] = data['headers'] skip_validation = kwargs.pop('esi_skip_validation', False) errors = {} for param in self.params: value = kwargs.pop(param.safe_name) if value == param.default: continue try: param.validate(value) except ValidationError as e: e.update_error_dict(errors, param.safe_name) data[param.part][param.name] = value if errors and not skip_validation: raise ValidationError(errors) cls = self.__class__ body = None if data['body']: body = list(data['body'].values())[0] self.method = cls.method.upper() self.url = URL(self.path.format(**data['path']), allow_relative=True, params=data['query']) self.headers = Headers(data['header']) self.stream = encode(body, None, None) self.timer = ElapsedTimer() self.prepare() # Clear out headers we don't need (These will be set by the session) for key in ["User-Agent"]: if key in self.headers: del self.headers[key]