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 aliasbe_equal_tobe(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 aliasbe_greaterbe_lesser_than(self, value): equivalent to "<". With aliasbe_lesser,be_less,be_less_thanbe_greater_or_equal_to(self, value): equivalent to ">=". With aliasesbe_greater_or_equal,be_greater_than_or_equal_tobe_lesser_or_equal_to(self, value): equivalent to "<=". With aliasesbe_lesser_or_equal,be_less_or_equal,be_less_than_or_equal_to,be_lesser_than_or_equal_tobe_numeric(self): checks ifself.valueis a number or string covertible to a number. With aliasbe_a_number
- Containment and Emptiness
contain(self, value): equivalent to "in". With aliaseshave,includebe_contained_in(self, value): equivalent to "in". Qith aliasesbe_in,be_included_inbe_empty(self): checks ifself.valueis iterable andFalse
- Truthiness
be_true(self): checks ifself.valueisTruebe_false(self): checks ifself.valueisFalsebe_truthy(self): checks ifself.valuebehaves true in if statement. With aliasesbe_truey,be_trueishbe_falsey(self): checks ifself.valuebehaves false in if statement. With aliasesbe_falsy,be_falsish
- Typing
be_of_type(self, value): checks ifself.valueis of specified type. With aliasesbe_type,have_typeinherit(self, value): checks ifself.valueinherits/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)
| File | Size | Uploaded | |
|---|---|---|---|
| expycted-0.8.2.tar.gz | 8.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|