Skip to main content

Overview

Expycted is yet another expect pattern implementation.

It is not dependent on any testing framework and can plug into any as it is just an abstraction over assert.

Examples:

from expycted import expect

expect(True).to_not.be_false()                                  # This will succeed

expect([]).to.be_empty()                                        # This will succeed

expect([1,2,3]).to.contain(3)                                   # This will succeed

expect(10).to.equal("10")                                       # This will raise AssertionError

expect(10).to.be("10")                                          # This will succeed

expect.function(int).to_raise(ValueError).when_called_with('a') # This will also succeed

Installation

Expycted can be installed from PyPi by using:

pip install expycted

Alternatively, you can clone the repository and build your own distribution using poetry.

git clone https://github.com/petereon/expycted.git
poetry build

Then you can install it using:

pip install ./dist/expycted-<version>-py3-none-any.whl

Matchers

Matchers are used to ensure some conditions are met.

Value Matchers

Value matchers can be used in two equivalent ways demonstrated below:

expect.value(10).to.be_greater_than(1)
expect(10).to.be_greater_than(1)

Currently available matchers are:

  • Eqality and similarity
    • equal(self, value): equivalent to "==". With alias be_equal_to
    • be(self, value): will check if string representation of values is same or if two objects have the same attributes or are equal
  • Numeric
    • be_greater_than(self, value): equivalent to ">". With alias be_greater
    • be_lesser_than(self, value): equivalent to "<". With alias be_lesser , be_less, be_less_than
    • be_greater_or_equal_to(self, value): equivalent to ">=". With aliases be_greater_or_equal, be_greater_than_or_equal_to
    • be_lesser_or_equal_to(self, value): equivalent to "<=". With aliases be_lesser_or_equal, be_less_or_equal, be_less_than_or_equal_to, be_lesser_than_or_equal_to
    • be_numeric(self): checks if self.value is a number or string covertible to a number. With alias be_a_number
  • Containment and Emptiness
    • contain(self, value): equivalent to "in". With aliases have, include
    • be_contained_in(self, value): equivalent to "in". Qith aliases be_in, be_included_in
    • be_empty(self): checks if self.value is iterable and False
  • Truthiness
    • be_true(self): checks if self.value is True
    • be_false(self): checks if self.value is False
    • be_truthy(self): checks if self.value behaves true in if statement. With aliases be_truey, be_trueish
    • be_falsey(self): checks if self.value behaves false in if statement. With aliases be_falsy, be_falsish
  • Typing
    • be_of_type(self, value): checks if self.value is of specified type. With aliases be_type, have_type
    • inherit(self, value): checks if self.value inherits/is a specified type. be_subclass_of, have_parent

Function Matchers

Function matchers can be called as such:

expect.function(string.replace).to_return('strength').when_called_with('ing', 'ength')

Currently available matchers are:

  • to_return(self, value=None, type_of_value=None) - checks if function returns a specified value, or type, or both.
  • to_raise(self, exception_type) - checks if function raises a specified exception.

In each case we have to specify arguments with which function is called in .when_called_with method. Method has aliases when_called_with_args, when_called_with_arguments

Filesystem Matchers

Filesystem matchers can be called as such:

expect.folder('/some/folder').to.contain('subfolder')

Currently available matchers are:

  • contain(self, name, type: Union[File, Folder, None, str] = None) - checks if folder contains a specified file or folder. If type is specified, it will check if file is file or folder is folder.
  • contain_file(self, name) - checks if folder contains a specified file.
  • contain_folder(self, name) - checks if folder contains a specified folder.
  • exist(self) - checks if folder exists.
  • be_empty(self) - checks if folder is empty.

They can be used with both expect.folder('/some/folder').to and expect.folder('/some/folder').to_not to check both positive and negative expectations.

Metadata

Release files for expycted 0.8.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for expycted 0.8.2
File Size Uploaded
expycted-0.8.2.tar.gz 8.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for expycted 0.8.2
File Interpreter ABI Platform
expycted-0.8.2-py3-none-any.whl Python 3 none any Details

Total release size: 17.8 kB

Release files / expycted-0.8.2.tar.gz

Download URL expycted-0.8.2.tar.gz
Size 8.9 kB
Tags Source
SHA-256 checksum
How to use checksums
7776757de000d2f724a7292c77c277d68e16f4d72fc6176eeb9743187f417540
BLAKE2b-256 checksum
How to use checksums
787598e72da8d61ab2b2e7c10dcee7ffe47d20a9212cddba0fc330b250db02ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / expycted-0.8.2-py3-none-any.whl

Download URL expycted-0.8.2-py3-none-any.whl
Size 8.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cac36bf7155ffc20a976a09996ae22e2ebdb9e45ece4ea9510113c16ee402e6c
BLAKE2b-256 checksum
How to use checksums
fe2b7b170d1d934fda6d67dd0290acaef389085ec6b830161fdac20826ebbf08
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release history Release notifications | RSS feed

This release

0.8.2 This release

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page