pact_testgen package¶
Subpackages¶
Submodules¶
pact_testgen.broker module¶
- class pact_testgen.broker.BrokerBaseSettings(_env_file: Optional[Union[str, os.PathLike]] = '<object object>', _env_file_encoding: Optional[str] = None, _env_nested_delimiter: Optional[str] = None, _secrets_dir: Optional[Union[str, os.PathLike]] = None)[source]¶
Bases:
pydantic.env_settings.BaseSettings- class Config[source]¶
Bases:
object- classmethod customise_sources(init_settings: Callable[[pydantic.env_settings.BaseSettings], Dict[str, Any]], env_settings: Callable[[pydantic.env_settings.BaseSettings], Dict[str, Any]], file_secret_settings: Callable[[pydantic.env_settings.BaseSettings], Dict[str, Any]]) Tuple[Callable[[pydantic.env_settings.BaseSettings], Dict[str, Any]], ...][source]¶
- env_prefix = 'pact_broker_'¶
- class pact_testgen.broker.BrokerBasicAuthConfig(_env_file: Optional[Union[str, os.PathLike]] = '<object object>', _env_file_encoding: Optional[str] = None, _env_nested_delimiter: Optional[str] = None, _secrets_dir: Optional[Union[str, os.PathLike]] = None, *, username: str, password: str)[source]¶
Bases:
pact_testgen.broker.BrokerBaseSettings- password: str¶
- username: str¶
- class pact_testgen.broker.BrokerConfig(_env_file: Optional[Union[str, os.PathLike]] = '<object object>', _env_file_encoding: Optional[str] = None, _env_nested_delimiter: Optional[str] = None, _secrets_dir: Optional[Union[str, os.PathLike]] = None, *, base_url: str, auth: pact_testgen.broker.BrokerBasicAuthConfig = None)[source]¶
Bases:
pact_testgen.broker.BrokerBaseSettings- auth: Optional[pact_testgen.broker.BrokerBasicAuthConfig]¶
- property auth_tuple: Optional[Tuple[str, str]]¶
Returns auth value suitable for passing to requests.
If username or password are present, will be Tuple[str,str], else None.
- base_url: str¶
- pact_testgen.broker.get_pact_from_broker(broker_config: pact_testgen.broker.BrokerConfig, provider_name: str, consumer_name: str, version=None) pact_testgen.models.Pact[source]¶
Make an HTTP request to the Pact Broker to retrieve the desired contract.
pact_testgen.cli module¶
Console script for pact_testgen.
pact_testgen.files module¶
- class pact_testgen.files.ProviderStateFileOutcome(value)[source]¶
Bases:
enum.EnumAn enumeration.
- LEFT_EXISTING = 3¶
- MERGED = 2¶
- NO_CHANGES_REQUIRED = 4¶
- WROTE_NEW = 1¶
- pact_testgen.files.load_pact_file(path: str) pact_testgen.models.Pact[source]¶
Loads the file at the supplied path into a Pact model
- pact_testgen.files.merge(target: str, src: str) Tuple[str, int][source]¶
Merge “src” code into “target”.
Only add functions from src that aren’t already present in target.
Returns the merged file as a string, and the number of functions that were added.
- pact_testgen.files.write_provider_state_file(provider_state_file: str, path: pathlib.Path, merge_file=False) pact_testgen.files.ProviderStateFileOutcome[source]¶
pact_testgen.generator module¶
- pact_testgen.generator.generate_tests(test_file: pact_testgen.models.TestFile, dialect: pact_testgen.dialects.base.BaseDialect) Tuple[str, str][source]¶
pact_testgen.models module¶
- class pact_testgen.models.Interaction(*, description: str, providerStates: List[pact_testgen.models.ProviderState] = None, request: pact_testgen.models.PactRequest, response: pact_testgen.models.PactResponse)[source]¶
Bases:
pydantic.main.BaseModel- description: str¶
- providerStates: Optional[List[pact_testgen.models.ProviderState]]¶
- request: pact_testgen.models.PactRequest¶
- response: pact_testgen.models.PactResponse¶
- class pact_testgen.models.Matcher(*, match: typing_extensions.Literal[equality, regex, type], max: int = None, min: int = None, regex: str = None)[source]¶
Bases:
pydantic.main.BaseModel- match: typing_extensions.Literal[equality, regex, type]¶
- max: Optional[int]¶
- min: Optional[int]¶
- regex: Optional[str]¶
- class pact_testgen.models.MatchingBodyRule(*, matchers: List[pact_testgen.models.Matcher])[source]¶
Bases:
pydantic.main.BaseModel- matchers: List[pact_testgen.models.Matcher]¶
- class pact_testgen.models.MatchingRule(*, body: Dict[str, pact_testgen.models.MatchingBodyRule])[source]¶
Bases:
pydantic.main.BaseModel- body: Dict[str, pact_testgen.models.MatchingBodyRule]¶
- class pact_testgen.models.Metadata(*, pactSpecification: pact_testgen.models.PactSpecification = None)[source]¶
Bases:
pydantic.main.BaseModel- pactSpecification: Optional[pact_testgen.models.PactSpecification]¶
- class pact_testgen.models.Method(value)[source]¶
Bases:
enum.EnumAn enumeration.
- CONNECT = 'CONNECT'¶
- DELETE = 'DELETE'¶
- GET = 'GET'¶
- HEAD = 'HEAD'¶
- OPTIONS = 'OPTIONS'¶
- PATCH = 'PATCH'¶
- POST = 'POST'¶
- PUT = 'PUT'¶
- TRACE = 'TRACE'¶
- class pact_testgen.models.Pact(*, consumer: pact_testgen.models.Pacticipant, interactions: List[pact_testgen.models.Interaction], metadata: pact_testgen.models.Metadata = None, provider: pact_testgen.models.Pacticipant)[source]¶
Bases:
pydantic.main.BaseModel- consumer: pact_testgen.models.Pacticipant¶
- interactions: List[pact_testgen.models.Interaction]¶
- metadata: Optional[pact_testgen.models.Metadata]¶
- provider: pact_testgen.models.Pacticipant¶
- property version¶
- class pact_testgen.models.PactRequest(*, body: Any = None, headers: pact_testgen.models.Headers = None, method: pact_testgen.models.Method, path: str, query: Dict[str, List[str]] = None)[source]¶
Bases:
pydantic.main.BaseModel- body: Optional[Any]¶
- headers: Optional[pact_testgen.models.Headers]¶
- method: pact_testgen.models.Method¶
- path: str¶
- query: Optional[Dict[str, List[str]]]¶
- class pact_testgen.models.PactResponse(*, body: Any = None, headers: pact_testgen.models.Headers = None, matchingRules: pact_testgen.models.MatchingRule = None, status: pydantic.types.ConstrainedIntValue)[source]¶
Bases:
pydantic.main.BaseModel- body: Optional[Any]¶
- headers: Optional[pact_testgen.models.Headers]¶
- matchingRules: Optional[pact_testgen.models.MatchingRule]¶
- status: pydantic.types.ConstrainedIntValue¶
- class pact_testgen.models.PactSpecification(*, version: str)[source]¶
Bases:
pydantic.main.BaseModel- version: str¶
- class pact_testgen.models.Pacticipant(*, name: str)[source]¶
Bases:
pydantic.main.BaseModel- name: str¶
- class pact_testgen.models.ProviderState(*, name: str, params: Dict = None)[source]¶
Bases:
pydantic.main.BaseModel- name: str¶
- params: Optional[Dict]¶
- class pact_testgen.models.RequestArgs(*, method: str, path: str, data: Dict = None, query_params: Dict = None, content_type: str = 'application/json')[source]¶
Bases:
pydantic.main.BaseModel- content_type: str¶
- data: Optional[Dict]¶
- method: str¶
- path: str¶
- query_params: Optional[Dict]¶
- class pact_testgen.models.TestCase(*, provider_state_names: List[str], test_methods: List[pact_testgen.models.TestMethodArgs])[source]¶
Bases:
pydantic.main.BaseModel- property combined_provider_state_names: str¶
- provider_state_names: List[str]¶
- property requires_provider_state: bool¶
- test_methods: List[pact_testgen.models.TestMethodArgs]¶
- class pact_testgen.models.TestFile(*, pact_version: str, base_class: str, consumer: pact_testgen.models.Pacticipant, import_path: str, provider: pact_testgen.models.Pacticipant, test_cases: List[pact_testgen.models.TestCase])[source]¶
Bases:
pydantic.main.BaseModel- base_class: str¶
- consumer: pact_testgen.models.Pacticipant¶
- import_path: str¶
- pact_version: str¶
- provider: pact_testgen.models.Pacticipant¶
- test_cases: List[pact_testgen.models.TestCase]¶
- class pact_testgen.models.TestMethodArgs(*, description: str, expectation: str, request: pact_testgen.models.RequestArgs)[source]¶
Bases:
pydantic.main.BaseModel- description: str¶
- expectation: str¶
- request: pact_testgen.models.RequestArgs¶
pact_testgen.pact_testgen module¶
Main module.
- pact_testgen.pact_testgen.convert_to_test_cases(pact: pact_testgen.models.Pact, base_class: str) pact_testgen.models.TestFile[source]¶
Given a Pact file, create TestFile representations according to the following:
One test case per provider state name.
Each interaction for a given provider state name becomes a test method.
- pact_testgen.pact_testgen.run(base_class: str, output_dir: pathlib.Path, pact_file: Optional[str] = None, broker_config: Optional[pact_testgen.broker.BrokerConfig] = None, provider_name: Optional[str] = None, consumer_name: Optional[str] = None, consumer_version: Optional[str] = None, test_file_name='test_pact.py', provider_state_file_name='provider_states.py', line_length=88, quiet=False, merge_ps_file=False)[source]¶
Loads the pact file, and writes the generated output files to output_dir
pact_testgen.public module¶
Public API.
Tokens defined here are imported in generated test code. Any change to the APIs defined here are breaking changes!
- class pact_testgen.public.Response(text: str, headers: typing.Dict[str, typing.Any] = <factory>, status_code: int = 200)[source]¶
Bases:
objectRequests-like Response class.
- headers: Dict[str, Any]¶
- status_code: int = 200¶
- text: str¶
- pact_testgen.public.verify_response(consumer_name: str, provider_name: str, pact_response: Dict[str, Any], actual_response: pact_testgen.public.Response, version: str = '3.0.0') pact_testgen.public.UnittestResult[source]¶
Returns whether the actual response received from the API matches the contract specified in the supplied pact
pact_testgen.utils module¶
pact_testgen.verify module¶
Module contents¶
Top-level package for Pact Test Generator.