生成测试用例的简单库。

python_wrap_cases的Python项目详细描述


Join the chat at https://gitter.im/erm0l0v/python_wrap_caseshttps://img.shields.io/travis/erm0l0v/python_wrap_cases.svghttps://img.shields.io/pypi/v/python_wrap_cases.svgDocumentation Status

用于生成带有参数的测试用例的简单库。

这是什么?

这个库帮助生成带有参数的测试。

让我们为这个函数编写一些测试:

importredefclear_start_end_dash(string):returnre.sub(r'^[\s\-]*-|-[\s\-]*$','',string)

我们可以这样写:

fromunittestimportTestCaseclassClearStartEndDashTest(TestCase):deftest_remove_first_dash(self):result=clear_start_end_dash('-my string')self.assertEqual(result,'my string')deftest_remove_all_first_dashes(self):result=clear_start_end_dash('-  -- --my string')self.assertEqual(result,'my string')deftest_remove_last_dash(self):result=clear_start_end_dash('my string-')self.assertEqual(result,'my string')deftest_remove_all_last_dashes(self):result=clear_start_end_dash('my string-- -- -- - ')self.assertEqual(result,'my string')deftest_keep_dash_at_center(self):result=clear_start_end_dash('my-string')self.assertEqual(result,'my-string')

很好,但是我们花了很多时间来编写那些完全相同的测试函数。

因此,让我们减少重复函数的数量:

fromunittestimportTestCaseclassClearStartEndDashDryTest(TestCase):deftest_remove_dash(self):cases=(('-my string','my string'),('-  -- --my string','my string'),('my string-','my string'),('my string-- -- -- - ','my string'),('my-string','my-string'))forstring,expected_resultincases:result=clear_start_end_dash(string)self.assertEqual(result,expected_result)

此代码有几个问题:

  • 易写难读。
  • 我们不能在每个案例中使用测试夹具(设置拆卸)。
  • 如果有一个案子失败了,其他的案子就跑不了了。
  • 如果testtest_remove_dash失败,它将无法帮助我们找出发生了什么。

看看我们使用这个库可以多么容易地解决这些问题:

fromunittestimportTestCasefrompython_wrap_casesimportwrap_case@wrap_caseclassClearStartEndDashWrapTest(TestCase):@wrap_case('-my string','my string')@wrap_case('-  -- --my string','my string')@wrap_case('my string-','my string')@wrap_case('my string-- -- -- - ','my string')@wrap_case('my-string','my-string')deftest_remove_dash(self,string,expected_result):result=clear_start_end_dash(string)self.assertEqual(result,expected_result)

此代码生成5个测试,其工作方式类似于一个简单的测试函数。

控制台输出:

test_remove_dash_u'-  -- --my string'_u'my string' (tests.example.test_simple_test.ClearStartEndDashWrapTest) ... ok
test_remove_dash_u'-my string'_u'my string' (tests.example.test_simple_test.ClearStartEndDashWrapTest) ... ok
test_remove_dash_u'my string-'_u'my string' (tests.example.test_simple_test.ClearStartEndDashWrapTest) ... ok
test_remove_dash_u'my string-- -- -- - '_u'my string' (tests.example.test_simple_test.ClearStartEndDashWrapTest) ... ok
test_remove_dash_u'my-string'_u'my-string' (tests.example.test_simple_test.ClearStartEndDashWrapTest) ... ok

安装

pip install python_wrap_cases

免费软件:BSD许可证

文档:https://python_wrap_cases.readthedocs.org

历史记录

0.1.0(2015-06-26)

  • pypi上的第一个版本。

0.1.2(2015-06-26)

  • 修复生成器导入

0.1.3(2015-06-26)

  • 添加一些文档

0.1.4(2015-06-29)

  • 自述文件添加分号
  • 修复pypi自述文件

0.1.5(2015-07-01)

  • 自述文件删除:;

0.1.6(2015-07-01)

  • 为Python3.2添加测试

0.1.7(2015-07-10)

  • 添加六个依赖项

0.1.8(2015-08-21)

  • 添加func生成器
  • 添加范围生成器
  • 修复自定义生成器中迭代器的问题
  • 为声明包装的测试用例添加新的api。(添加了不带参数的包装盒装饰符)

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

推荐PyPI第三方库


热门话题
安卓 studio安装的java Unity本机广告   java如何将映射转换为对象   java我试图使用rest控制器从h2数据库中检索记录,但它说没有数据集   反思为什么会抛出java。lang.InstanceException?   在opensuse中找不到Java/javac   java为Android上的谷歌地图添加了5900多个标记。如何有效地做   java如何在if语句中使用循环   java如何在JPA(Hibernate)中映射一对多关系和复合主键?   如何在Java中读取和写入外部进程?   Java线程。睡眠时间最短   java使用EclipseGradle插件如何离线托管和使用依赖项(库jar文件)   java为什么虚拟引用在排队时没有被清除?   java无法理解如何创建用于响铃报警的取消按钮   java解析不应通过注入容器错误发生   java Toast或ProgressDialog不显示   java在自定义对象上使用优先级队列的更好方法   java格式的。wmv文件。(或者任何视频文件都很好)   从页面调用另一个侦听器后,不会调用java JSF<f:ajax>侦听器   java注释ConfigApplicationContext不能多次刷新有什么原因吗?