通过docstring等自动化测试

fastest的Python项目详细描述


最快

根据docstring中的示例及其他内容创建单元测试。

Codacy BadgeScrutinizer_BadgeCoverage StatusBuild_StatusCurrent_VersionPython_Version

安装

$ pip install fastest

用法

$ fastest

监视所有.py文件并为整个项目创建覆盖范围。

$ fastest --path=$(pwd) --source=py_module

其中path是项目根目录,并且^{} 与传递给命令coverage run -m unittest --source=$source test的值相同

$ fastest --exclude=dont_check_this_dir/*,these__*.py

要排除文件/文件夹,请使用--exclude,文件监视程序将忽略它们。 默认情况下,faster创建的test/*文件夹被排除在外。

$ fastest --poll-duration=10

每隔10s生成文件、运行测试和覆盖率,默认值为1s

运行时发生的事情python main.py --path=$(pwd)

  1. 在项目根目录中检查test文件,如果找不到则创建该文件。
  2. 监视.py文件的更改。
  3. 如果函数的docstrings中有如下示例,则创建unittests:
# .# ├──module_a# ├──module_b#    └── utils.py#defadd(x,y):"""    ----    examples:    1) add(3, 4) -> 7    """returnx+y

这将在test目录中创建一个unittest,assertEqual(add(3, 4), 7)Class test_<file>_<function>(self)内 (对于给定的目录,树:Class test_utils_add(self)

  1. 运行创建的所有测试
  2. 创建覆盖率报告(html格式)
  3. 打印到覆盖率报告index.html的链接。

如何充分利用最快速度

  1. 保持你的functions轻:
    • 偏执于关注点的分离。
    • 太多的条件暗示您可能需要另一个函数
    • 复杂的循环和if-else不是可伸缩的代码,一个错误就会 把那座塔拿下来,增加一些功能需要有人通过 那个脑筋急转弯。
  2. 使用库,但用自己的函数包装它们类似:使用^ {CD18}}还是不可避免的数据库? 用你自己的功能包装它们。
    • 有助于在一个地方添加自定义设置(配置基本URL和类似配置等内容)
    • 帮助模拟,以便可以对整个代码库进行单元测试。
  3. 如果您的工作速度太快,无法维护高质量的文档,docstring可能会过时。 现在添加示例可以帮助您创建 防止描述过时的测试,如果测试失败, 可能文档也需要再次查看。由于文档 有助于测试。

示例:

  1. 允许在docstrings中创建变量,包括lambda函数!
    defquick_maths(a,b):"""   ----   examples:   @let    a = {       'apples': 3,       'oranges': 4   }   @end   1) quick_maths(a['apples'], a['oranges']) -> 7   ----   """returna+b
  2. 可以在@let--@end块中运行任何有效的python代码。
  3. 可以包括项目外部已安装的模块。
    defcurrent_time():"""   ---   examples:   @need   from datetime import datetime   @end   1) current_time() -> datetime.now()   """returndatetime.now()
  4. 如果类型被添加到docstring,fast将创建测试 用于检查针对空参数返回的值的类型。
    defchain_strings(str1,str2):"""    :param str1: str    :param str2: str    :return: str    """returnstr1+str2
    faster将为上述代码片段创建一个assertInstanceIs(chain_strings('', ''), str)
  5. 要创建assertRaises测试用例:
    defcrashes_sometimes(input_string):"""   ----   examples:    !! crashes_sometimes(None) -> ValueError   ----   """ifnotinput_string:raiseValueErrorreturninput_string
    !! crashes_sometimes(None) -> ValueError标记的语法处理异常 代码抛出的

最快的目标

  • [X]帮助维护测试、代码覆盖率和文档。
  • []帮助解决代码中的性能问题
  • []提供代码的可测试性得分
  • []在代码可能崩溃的情况下,测试自动生成的输入的函数。

最快使用自己的创建测试和管理覆盖率100%

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java 安卓阻止编译的第三方库的特定网站   java如何使用带回调的send()方法返回元数据?   将双值数组从一个java类传递到另一个java类   java OracleJava7安装程序返回错误代码   smb共享上新创建的Java文件没有用户,也没有组   打印unicode值而不是字符串的Java程序   java将字符串放在括号中的语法意义   java将对象添加到arraylist,除非它已经存在   java正在尝试查找回文数   java如何解决“过时元素引用:导航到上一页时元素未附加到页面文档”   java从无关方法调用超级方法   用于java代码的socket网络设置,以便不同网络/位置上的两台计算机可以使用RMI   用Java字符数组处理C字符数组