Optimize unittest loading - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Optimize unittest loading (/thread-16563.html) |
Optimize unittest loading - Nazz - Mar-05-2019 Hello everyone, I have a problem, let me describe it. I've written a unittest (actually, an integration test) for the whole flow of my application (the flow from incoming request to outgoing response). All works fine, but... When I run my test, the system is preparing (loads all imports, components, modules) for the whole flow, and this takes too much time (over 3 minutes) only for preparation, and only then it runs the test (which takes only 10 seconds). How can I speedup my test runner? Is there a way to optimize the process? Maybe somehow disable forcing of *.pyc files regeneration or some other way? RE: Optimize unittest loading - Larz60+ - Mar-05-2019 Missing information:
RE: Optimize unittest loading - Nazz - Mar-05-2019 1. Code sample (this is only one file): # TODO: this class will extends from core HttpCommunicator from typing import Optional from contracts import contract from config import SPWContainerDsb from provider.request.dsb_request import DsbRequest from provider.service.request_builder.http import DsbHttpRequestBuilderFactory from transport.http_entities import HttpRequest from transport.http_request_to_spw_transformer import HttpRequestToSpwTransformer from transport.spw_xml_element_transformer import SpwRequestXmlElementTransformer from transport.transport import Message, TransportAsync class DsbCommunicator: @contract( transport='$TransportAsync', http_request_builder_factory='$DsbHttpRequestBuilderFactory', spw_request_builder='$HttpRequestToSpwTransformer', spw_request_xml_element_transformer='$SpwRequestXmlElementTransformer' ) def __init__( self, transport: TransportAsync, http_request_builder_factory: DsbHttpRequestBuilderFactory, spw_request_builder: HttpRequestToSpwTransformer, spw_request_xml_element_transformer: SpwRequestXmlElementTransformer ): self.__transport = transport self.__http_request_builder_factory = http_request_builder_factory self.__spw_request_builder = spw_request_builder self.__spw_request_xml_element_transformer = spw_request_xml_element_transformer self.__last_spw_message = None @contract(dsb_request='$DsbRequest') def send_request(self, dsb_request: DsbRequest): self.__last_spw_message = None http_request = self.__get_http_request(dsb_request) spw_message = self.__get_spw_message(http_request) self.__last_spw_message = spw_message self.__transport.send_message(spw_message) @contract(dsb_request='$DsbRequest', returns='$HttpRequest') def __get_http_request(self, dsb_request: DsbRequest) -> HttpRequest: http_request_builder = self.__http_request_builder_factory.get_http_request_builder(dsb_request) http_request = http_request_builder.create_http_request(dsb_request) return http_request @contract(http_request='$HttpRequest', returns='$Message') def __get_spw_message(self, http_request: HttpRequest) -> Message: spw_request = self.__spw_request_builder.to_spw_request(http_request) spw_request_element = self.__spw_request_xml_element_transformer.to_element(spw_request) spw_body = spw_request_element.to_string() message = Message(spw_body, SPWContainerDsb(spw_body)) return message def get_last_spw_message(self) -> Optional[Message]: return self.__last_spw_message2. Windows 10 3. 32Gb 4. Python 3.5 RE: Optimize unittest loading - Nazz - Mar-05-2019 I found performance problem in my code: using PyContracts library. It was analyse too match code and rules via inspect library. |