单元测试断言格式化工具
项目描述
Teyit
您的Python单元测试(特别是使用unittest
模块编写的测试)的分析器/格式化工具。
用法
usage: teyit [-h] [--pattern PATTERN] [--show-stats] [--fail-on-change] [paths ...]
positional arguments:
paths
optional arguments:
-h, --help show this help message and exit
--pattern PATTERN Wildcard pattern for capturing test files.
--show-stats Print out some debug stats related about refactorings
--fail-on-change Exit with status code 1 if any file changed
Pre-commit Hook
- repo: https://github.com/isidentical/teyit
rev: master
hooks:
- id: teyit
示例
以下是一些来自CPython测试套件的示例
--- a/Lib/test/test_telnetlib.py
+++ b/Lib/test/test_telnetlib.py
@@ -48,7 +48,7 @@ def testContextManager(self):
self.assertIsNone(tn.get_socket())
def testTimeoutDefault(self):
- self.assertTrue(socket.getdefaulttimeout() is None)
+ self.assertIsNone(socket.getdefaulttimeout())
socket.setdefaulttimeout(30)
try:
telnet = telnetlib.Telnet(HOST, self.port)
@@ -215,7 +215,7 @@ def test_read_some(self):
# test 'at least one byte'
telnet = test_telnet([b'x' * 500])
data = telnet.read_some()
- self.assertTrue(len(data) >= 1)
+ self.assertGreaterEqual(len(data), 1)
# test EOF
telnet = test_telnet()
data = telnet.read_some()
--- a/Lib/test/test___future__.py
+++ b/Lib/test/test___future__.py
@@ -13,8 +13,9 @@ def test_names(self):
for name in dir(__future__):
obj = getattr(__future__, name, None)
if obj is not None and isinstance(obj, __future__._Feature):
- self.assertTrue(
- name in given_feature_names,
+ self.assertIn(
+ name,
+ given_feature_names,
"%r should have been in all_feature_names" % name
)
given_feature_names.remove(name)
--- a/Lib/test/test_abc.py
+++ b/Lib/test/test_abc.py
@@ -321,14 +321,14 @@ class A(metaclass=abc_ABCMeta):
class B:
pass
b = B()
- self.assertFalse(isinstance(b, A))
- self.assertFalse(isinstance(b, (A,)))
+ self.assertNotIsInstance(b, A)
+ self.assertNotIsInstance(b, (A,))
--- a/Lib/test/test_bigmem.py
+++ b/Lib/test/test_bigmem.py
@@ -536,25 +536,25 @@ def test_contains(self, size):
edge = _('-') * (size // 2)
s = _('').join([edge, SUBSTR, edge])
del edge
- self.assertTrue(SUBSTR in s)
- self.assertFalse(SUBSTR * 2 in s)
- self.assertTrue(_('-') in s)
- self.assertFalse(_('a') in s)
+ self.assertIn(SUBSTR, s)
+ self.assertNotIn(SUBSTR * 2, s)
+ self.assertIn(_('-'), s)
+ self.assertNotIn(_('a'), s)
公共API
teyit.refactor(source: str, **kwargs) -> str
到refactor_until_deterministic
的快捷方式,仅用于检索源代码。
def refactor_until_deterministic(source: str, blacklist: FrozenSet[str] = frozenset(), *, max: int = 5) -> Tuple[str, List[Rewrite]]
运行rewrite_source
直到无法再重构(或达到max
限制)。
def rewrite_source(source: str, *, blacklist: FrozenSet[str] = frozenset()): -> Tuple[str, List[Rewrite]]
重构源代码,将断言用例更改为正确的形式。blacklist
参数是一个不应重构的函数的frozenset(例如:frozenset(('assertX', 'assertY'))
)。
项目详情
下载文件
下载适合您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
teyit-0.4.3.tar.gz (7.0 kB 查看散列值)
构建分布
teyit-0.4.3-py3-none-any.whl (7.2 kB 查看哈希值)
关闭
teyit-0.4.3.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c74cdec17f25e68176778ea6f00afae2e97344e97b4a6e63b3a4cdca6f1290ab |
|
MD5 | 4fd2ec71f97d7a0c3e2c496a3c90e9a7 |
|
BLAKE2b-256 | fcc89c7b0569e4b8587301b75200cd9454752d22d17966947508f2dd05cde10a |
关闭
teyit-0.4.3-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | af6681d18b47be3e63fe3ccb310948617e691eb94004d205e54be9a74cb79cff |
|
MD5 | 3deed70ae0eb0811f60840ef5b078201 |
|
BLAKE2b-256 | e7cd2a65fb71a147807c33eedef519cdf17a70f4d28ebf2a78346b196b5b9528 |