ExploTest
Project description
Some assumptions on the transformer and how to fix your code:
- Generally, no global states. As the transformer essentially runs your input again, for any sequence of inputs, it is assumed
that the result running the sequence twice will be the same. This means that global states that may change during
testing is not testable. This also means singleton patterns are more or less untestable. Pass the mechanism in as a class instead.
To fix:
Before:
node_id = 0
def get_new_id() -> int:
global node_id
node_id += 1
return node_id
class Foo:
def __init__(self):
self.node_id = get_new_id()
if __name__ == "__main__": # When testing
assert Foo().node_id == 1
After:
class IDGenerator:
def __init__(self):
self.node_id = 0
def get_next_id(self) -> int:
self.node_id += 1
return self.node_id
class Foo:
def __init__(self, id_gen: IDGenerator):
self.node_id = id_gen.get_next_id()
if __name__ == "__main__": # When testing
id_generator = IDGenerator()
assert Foo(id_generator).node_id == 1
or
class IDGenerator:
def __init__(self):
self.node_id = 0
def get_new_id(self) -> int:
self.node_id += 1
return self.node_id
id_generator: IDGenerator = None
def get_next_id():
if id_generator is None:
raise Exception() # Can also return some default value
return id_generator.get_new_id()
def set_id_generator(id_gen: IDGenerator):
global id_generator
id_generator = id_gen
class Foo:
def __init__(self):
self.node_id = get_next_id()
if __name__ == "__main__": # When testing
set_id_generator(IDGenerator())
assert Foo().node_id == 1
- (If using the print exploration function):
- A single point of return, situated at the bottom of the file
- The state is not changed after the print
- A returned value (if tuples) is a subset of exploratory print expression
- The test generated is not super robust; specifically the test generated might not cover the entire list if the iterator loops through all the items (the index isn't retrievable)
- Either the function is at the top level, or it is directly in some top level class (i. e. this must be directly retrievable at the top level)
- Zero support for anonymous functions. Why would you want to test that?
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
explotest-0.1.5.tar.gz
(18.1 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
ExploTest-0.1.5-py3-none-any.whl
(16.9 kB
view details)
File details
Details for the file explotest-0.1.5.tar.gz.
File metadata
- Download URL: explotest-0.1.5.tar.gz
- Upload date:
- Size: 18.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cabe9fa6ff70f071af088cdcc836e0eed1d3e64a9000e0f91cd1daa0811ed9f4
|
|
| MD5 |
bcf29ac44e4a7bd70e0f2e246971b7d0
|
|
| BLAKE2b-256 |
a0c1d99c3ebd265fc944df95cf7a5fa5f432d24c6fd1ff4300a2d23ecc112495
|
File details
Details for the file ExploTest-0.1.5-py3-none-any.whl.
File metadata
- Download URL: ExploTest-0.1.5-py3-none-any.whl
- Upload date:
- Size: 16.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d74c1ea9b0054e2cb13c2a3a4dd9bdf0ce3ccacbeb8fad818818331574c897e8
|
|
| MD5 |
d9bbb1e473e1ae10683c8ab2ddc91c47
|
|
| BLAKE2b-256 |
c7b0493ea2595e9bb2fa41a201829e4c920ed208ba9d29ff66055eaf5bf2fb4e
|