一个简单的基于cli的Python记录器

simple_test_generator的Python项目详细描述


简单测试发生器

自动化、全面和干净的pytest测试用例。在

说明

If we format our code with tools like Black, then why don't we do the same with our tests?

帮助您使用真实的测试用例达到100%的测试覆盖率。 生成的测试“正常工作”,即它们是干净的,不知道实现的细节,并且不需要主动维护。在

如果您的函数是deterministic(例如pure),那么它可以很好地工作。在

If not, then you should probably make them so!

这是pytest的DDT(开发驱动测试,数据驱动测试,或者两者兼而有之:nerd_face:)

为什么?在

太繁琐/难以为应用程序生成自定义数据?在

  • 通过为您生成测试节省时间:tada:
  • 不费吹灰之力就能显著提高测试代码的覆盖率
  • 通过分离代码和数据编写更易于维护的测试
  • 帮助您在新项目中一致地组织测试代码,或者:
  • 替换现有的无序测试代码:+1:
  • 加速迁移到pytest

Tests that you write manually can still be made to follow the same conventions as simple_test_generator for consistency

在正常运行中使用

运行测试时使用

然后,确认测试用例的期望值是正确的。在

最后,只将其作为测试依赖项安装。在

演示

看到botostubs在20秒内从0变为99%!在

在PyPI上释放

  • pipenv shell
  • flit build
  • flit publish

提示时输入密码。在

文件

在新文件中反复运行测试用例以避免覆盖以前的测试用例。文件名后面加上-00、-01、。。。最多10个文件。在

如果函数参数不可序列化,则不会生成测试用例。您将在该函数的日志中看到一个错误。在

开发文档

部分仍然粗糙;个人笔记

调用-m simple_test_generator没有在调试器中删除。当用作库with Recorder(): ...时,它可以工作

注释

  • 它不能支持所有类型的数据,例如断言返回其他函数的函数。请参阅有关如何处理此问题的部分。在
  • 此项目使用酸洗来加载测试数据。如果您是生成测试数据的人,那么在测试期间加载它应该很好。否则,不要加载不可信的测试数据。在

特点

  • 处理返回生成器的函数,方法是将生成器自动扩展到Python列表中,以便对其进行断言。在

托多

  • 次要问题:主模块中的函数可能被加载两次,为该函数创建两次相同的测试用例。(可能只在本项目中发生)
  • 支持返回函数的函数。我们需要一种可靠的方法来断言函数与其反序列化表示之间的等价性。在

相关

这些项目类似于这一个,但我的项目需要你付出更少的努力,产生更少的样板:脸红:

如果测试失败了怎么办?在

It may be due to a bug in simple_test_generator but it's probably because it's difficult to serialise all data types, e.g file descriptors.

应自行处理的案件:

  • 断言不能在对象上正常工作

You should define an __eq__ function in your class. This will ensure that pytest asserts the return values properly.

如何在问题中报告

  1. 提出一个关于测试失败的问题here(或对现有问题投赞成票)
  2. 粘贴功能代码(或其签名)
  3. 粘贴simple\u test_生成器生成的json文件,例如test-data/path/to/function/01.json
  4. 陈述你的期望
  5. 陈述发生了什么

版权所有

根据麻省理工学院的执照被释放。有关详细信息,请参阅名为LICENCE的文件。在

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

推荐PyPI第三方库


热门话题
virtualbox无法从java移动共享文件夹中的文件   java如何连接Android 4.3.5(GA)的apache HttpClient库?   片段中的java Recyclerview未立即显示警报对话框结果   javac(n,r)计算器程序不工作   java使用BooleanQuery还是编写更多索引?   如何在java中设置y/n循环?   java不兼容的通用通配符捕获   java如何在安卓xml中编写数据绑定时的三元操作条件   java如何使用FileDialog?   java如何创建单元测试来检测是否有人使用错误的编码编辑了文件?   java如何从唯一的字符串生成唯一的int?   java gradletomcatplugin:log4j:WARN找不到记录器的附加程序   java我的动态编程解决方案(Kefa和第一步)在codeforces中有什么问题?   java每天更新两个数据库,使它们都包含相同的有效数据集   java如何检查给定的时间是否在时间限制之间   java在单个json POST上保存父级和子级   java如何获取Solr字段类型