用于构建自动化集成检查的工具包

questions-three的Python项目详细描述


问题三

为严肃的软件审问者(以及愚蠢的审问者)提供的库

Stop! Who would cross the Bridge of Death must answer me these questions three, ere the other side he see.

--守门员

为什么要这样

对自动化软件测试的绝大多数支持主要分为两类:一类是指导设计并在编写代码时保持对代码控制的低级单元测试工具,另一类是在单元集成后减少人工测试人员工作量的高级系统测试工具。

第一组优化了精度和速度。一个好的单元测试只证明了毫秒内的一个点。第二组优化了人力资源的有效使用,使测试人员能够重复繁琐的操作,而不需要太多(或任何)编码工作。

工程就是要权衡取舍。我们可以减少编码工作,但前提是我们愿意牺牲控制权。这使得现有的高级测试自动化工具对那些倾向于反向贸易的测试者来说显然是不令人满意的:更多的控制以交换自动化的需要作为^ {EM1}真诚的“EEM>软件开发项目”。

^ {STR 1 } $如果你想要完全控制你的系统级自动化测试,并且愿意在你的指甲下面交换一些代码污垢,那么问题三可以是你最好的朋友。< /强>作为一个灵活的库,而不是一个固执己见的框架,它将支持你而不必命令结构或规则。它的功能是为了协同工作而设计的,但是您可以单独使用它们,甚至可以将它们集成到您选择的第三方或自行开发的框架中。

盒子里有什么

  • scaffolds帮助您构建测试。从库中选择一个或将其用作示例来构建自己的库。

  • reporters提供各种读取器预期的结果。尽可能多地使用或者尽可能少地使用,或者遵循设计模式并构建自己的。

  • event broker它允许组件在不了解彼此的情况下协同工作。需要整合一种新的记者吗?只需联系代理并订阅相关事件。不用碰别的东西。

  • http客户端跟踪自己的活动并将失败转换为有意义的测试报告工件。

  • webdriver集成有助于兼容性测试,并使selenium webdriver成为问题3事件驱动世界的完整公民。

  • vanilla函数对于测试非常有用,并且完全独立。想用多少就用多少。

提供的“测试脚本”脚手架帮助您编写包含一个或多个测试的测试套件。

安装问题3

pip install questions-three

编写测试

from questions_three.scaffolds.test_script import test, test_suite

with test_suite('ExampleSuite'):

  with test('A passing test'):
      assert True, 'That was easy'

运行测试

无需特别执行人。只需运行脚本:

python example_suite.py

检查结果

控制台输出应如下所示:

2018-08-13 14:52:55,725 INFO from questions_three.reporters.event_logger.event_logger: Suite "ExampleSuite" started
2018-08-13 14:52:55,726 INFO from questions_three.reporters.event_logger.event_logger: Test "A passing test" started
2018-08-13 14:52:55,726 INFO from questions_three.reporters.event_logger.event_logger: Test "A passing test" ended
2018-08-13 14:52:55,729 INFO from questions_three.reporters.event_logger.event_logger: Suite "ExampleSuite" ended

还应该有一个包含报表的报表目录:

> ls reports
ExampleSuite.xml    jenkins_status

examplesuite.xml是一个junit xml格式的报表,许多报表解析器(包括jenkins ci)都可以使用它。它由junit_reporter模块生成。

jenkins_status是一个纯文本文件,它将所有测试套件的结果从一个批集中到一个jenkins可以显示的结果中。它由jenkins_build_status模块生成。

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

推荐PyPI第三方库


热门话题
安卓在java中加入字符串组以创建复合字符串   java系统甚至不点击“下一步”或“上一步”按钮就将我返回到上一页,而不是进入下一页   java如何在arrayList中获取特定列的不同值   CXF GZIP REST JAVA   Java:使用大量半恒定标志检查优化循环中的循环?   java如何在两个应用程序之间进行会话管理?   java SVG文件使用蜡染(但没有轴线)转换为PNG   使用协议缓冲区和内部数据模型的java   java如何在logtag 安卓中打印和查看字符串的值   javascript如何在NodeJs中应用Java/Spring的分层架构?   java Spring URL在JSP中编码不正确   模式对话框后面的java工具提示   java WSRPC生成日历对象而不是日期   在对象外部无法识别类变量   java将图像从文件读/写到BuffereImage的最快方法?   JavaSpring数据存储库对具有不同Id的子类使用抽象超类   安全在Java 5.0上运行web应用程序服务器有危险吗?