`
touchmm
  • 浏览: 1039961 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

用unittest测试web2py应用中的非页面部分

阅读更多

虽然web2py在文档中建议采用doctest对controller进行测试的方式,但是一则我对doctest不熟,二则只对controller层进行测试覆盖虽然很全面,但是测试粒度太大,对我来说测得不够细。

我 的设计习惯是controller层只进行简单的调用转换,实际的业务逻辑放在module层(注意:不是model层)处理,虽然在model里进行设 置后借助于Generic View也能干很多事情,但是一方面我不习惯这种方式,另一方面这种方式还是有一定的局限性——最主要是我不想把太多界面上的东西放到model里。

既 然业务逻辑在module中,那么我就需要在不借助页面的情况下对这些module进行单独的测试,这是文档建议的测试方式所做不到的——我又不想为了测 试而特地弄几个页面。于是研究了一下如何用unittest对module进行测试——问题在关键在于如何在unittest中创建web2py的运行环 境。而这一环境的核心就是db——如何初始化一个db供被测试的module使用。

其实要做到这一点并不难。gluon.shell包中提供了一个函数exec_environment来实现这一功能。假设有一个db.py是这样的:

那么测试用例可以写成这样:

代码很简单,最开始一段是准备程序的运行路径,因为这个测试用例的文件是放在: web2py/applications/yourapp/tests下的,所以用"../../.."来指向web2py的根目录,并定位当前位置于此。

重 点在于setUp函数中调用了exec_environment函数来执行db.py,这样就能够为测试准备好web2py的运行环境,并启用db.py 中的model定义。之后在testDB和testDataModule中就可以使用db进行数据库访问并检测执行结果。这与一般的unittest应用 没什么不同。

最后需要注意的一点是:不能用windows exe版的web2py,要用源码版的web2py才能正常使用unittest,否则会出错。

分享到:
评论

相关推荐

    Python-meteoraPy完成的web应用性测试工具

    通过使用meteora-Py,开发者和测试工程师可以高效地执行各种测试任务,确保Web应用在上线前满足预期的性能标准。 Python开发-测试工具标签表明了meteora-Py的核心是利用Python的强大功能和丰富的生态系统来实现测试...

    selenium-3.141.0-py2.py3-none-any.whl

    Selenium 是一个广泛使用的自动化测试工具,特别适用于 Web 应用程序的测试。它支持多种编程语言,包括 Python,通过提供的库(如这个文件),可以编写脚本来模拟用户在浏览器上的操作,例如点击、输入、导航等。...

    Python库 | seleniumbase-1.35.2-py2.py3-none-any.whl

    在实际应用中,你可以利用`seleniumbase`进行网页功能的验证、性能测试、回归测试等。例如,如果你是一家电商网站的开发团队,可以编写`seleniumbase`测试脚本来检查商品页面的显示、搜索功能、购物车操作等是否正常...

    Python库 | py.saunter-0.32-py2.7.egg

    py.saunter是一个专门用于自动化测试的Python库,它为Web应用程序提供了一种简洁、易用的接口,便于编写和执行复杂的测试场景。这个库的核心是简化用户在浏览器上的交互,模拟真实用户的操作,比如点击、填写表单、...

    Python库 | seleniumbase-1.55.0-py2.py3-none-any.whl

    Python库`seleniumbase`是一个强大的自动化测试框架,专注于简化网页...通过使用`seleniumbase-1.55.0-py2.py3-none-any.whl`这个文件,你可以快速地在你的Python环境中部署这个库,从而提升你的Web测试效率和质量。

    python自动化测试

    - 在Web自动化测试中,将页面元素和与其相关的操作封装成对象,便于维护和复用。 6. **Selenium**: - 一个用于Web应用程序测试的工具,可模拟真实用户在浏览器上的操作,支持多种浏览器。 7. **Appium**: - ...

    python 自动化测试安装包

    Python 自动化测试是软件开发过程中不可或缺的一部分,它能够提高测试效率,减少手动测试的工作量,确保代码质量。本安装包专注于 Python 在自动化测试领域的应用,适用于个人学习和使用。 在 Python 中,有许多...

    SeleniumWebdriverPython自动化测试环境(PPT35页).pptx

    Selenium WebDriver是自动化测试领域中广泛使用的工具,结合Python语言,可以构建高效且可扩展的Web应用测试框架。本篇将详细介绍Selenium WebDriver与Python的结合使用,以及如何搭建自动化测试环境。 一、...

    python web数据采集显示

    在IT行业中,Python是一种广泛应用的编程语言,尤其在Web数据采集和分析方面表现突出。本项目专注于使用Python进行Web数据采集并借助matplotlib库进行数据显示。下面将详细解释这些知识点。 1. **Python Web数据...

    Python web接口开发与测试

    - **语法变化**:例如print语句在Python 2.x中是作为语句使用的,而在Python 3.x中则变成了一个函数。 - **新特性**:Python 3.x引入了许多新特性,如类型提示等。 - **安全性**:Python 3.x在安全性方面进行了...

    tdd-for-web-development-with-django-and-selenium

    - 在本书中,功能性测试是使用Selenium进行的,Selenium是一种用于自动化浏览器操作的强大工具,特别适合用于测试Web应用。 3. **测试先行原则(Do Nothing Until You Have a Test)**: - 这是TDD的一个基本原则,...

    Python web2018

    Python Web接口开发与测试是现代软件工程中的一个重要环节,特别是在2018年及以后,随着互联网技术的快速发展,Python语言在Web领域的应用越来越广泛。本资料主要关注使用Python进行Web接口的构建、测试和自动化测试...

    Python库 | zope.testbrowser-3.4.1-py2.5.egg

    《Python库深度剖析:zope.testbrowser-3.4.1-py2.5.egg》 在Python的开发世界中,...在实际项目中,结合其他测试框架如unittest或pytest,zope.testbrowser可以发挥更大的作用,帮助开发者构建稳定、可靠的Web服务。

    python学习测试小例子

    在测试自动化方面,Selenium是一个广泛使用的工具,用于Web应用程序的UI自动化测试。通过Python的selenium库,我们可以控制浏览器执行各种操作,如点击按钮、填写表单、验证页面元素等。例如,`webdriver.Chrome()`...

    py-flask项目开发-截止日期计算器

    在本项目"py-flask项目开发-截止日期计算器"中,我们将探讨如何使用Python的Flask框架构建一个实用的应用程序,该应用能够帮助用户计算截止日期。Flask是一个轻量级的Web服务程序,它提供了丰富的功能来创建交互式的...

    selenium2python自动化测试必备

    【标题】"selenium2python自动化测试必备"指的是使用Selenium 2版本结合Python语言进行自动化测试的一套资源集合。Selenium是一个强大的Web应用程序测试框架,它允许开发者编写可运行在多种浏览器上的测试脚本。...

    Python实现自动化测试.docx

    - **unittest**:作为Python标准库的一部分,提供了编写和执行单元测试的基础功能。 - **pytest**:是一个更为灵活且易于使用的测试框架,支持插件扩展。 - **Selenium**:主要用于Web应用的UI自动化测试。 #### 二...

    HTMLTestRunner

    HTMLTestRunner是Python中用于自动化测试的一个工具,尤其在结合Selenium WebDriver进行Web应用程序测试时,它能生成详细的HTML格式的测试报告。这个工具的主要优点是它可以将测试结果以易于阅读和理解的方式呈现,...

Global site tag (gtag.js) - Google Analytics