Python测试驱动开发(二)-第一个功能测试内容及说明

内容说明

补充第一篇的内容,有兴趣的可自行参考「PythonWeb开发:测试驱动方法」

功能测试

使用 Selenium 实现的测试可以驱动真正的网页浏览器,让我们能从用户的角度查看应用是
如何运作的。因此,我们把这类测试叫作“功能测试”。
最简单的方式,就是从User Story中把用户的行为都表示出来。

术语说明

功能测试 = 验收测试 = 端到端测试
书上所说的功能测试,「有些人喜欢称之为验收测试(Acceptance Test)或端到端测试
(End-to-End Test)。这类测试最重要的作用是从外部观察整个应用是如何运作的。另
一个术语是黑箱测试(Black Box Test),因为这种测试对所要测试的系统内部一无
所知。」

在项目的根目录加上功能测试档案

# functional_tests.py

from selenium import webdriver
browser = webdriver.Firefox()
# 用户知道密个在线待办事项应用
# 用户看了这个应用的首页
browser.get('http://localhost:8000')

# 用户注意到网页的标题和头部都包含 “ To-Do ” 这个词
assert 'To-Do' in browser.title

# 应用邀请用户输入一个待办事项
# 用户在一个文本框中输入了 “ Buy peacock feathers ” (购买孔雀羽毛)
# 用户的爱好是使用假蝇做饵钓鱼
# 用户按回车键后,页面更新了
# 待办事项表格中显示了 “ 1: Buy peacock feathers ”
# 页面中又显示了一个文本框,可以输入其他的待办事项
# 用户输入了 “ Use peacock feathers to make a fly ” (使用孔雀羽毛做假蝇)
# 用户做事很有条理
# 页面再次更新,用户的清单中显示了这两个待办事项
# 伊迪丝想知道这个网站是否会记住她的清单
# 用户看到网站为自己生成了一个唯一的URL
# 而且页面中有一些文字解说这个功能
# 用户访问那个URL,发现她的待办事项列表还在
# 用户很满意,去睡觉了
browser.quit()

运行方法:

利用Python标准库中的 unittest 模块

说明直接在代码中注释,直接上代码

class NewVisitorTest(unittest.TestCase):
    """测试组织成类的形式,继承unittest.TestCase"""

    def setUp(self):
        """
        setUp和tearDown是特殊的方法,分别在各测试方寸前和之后运行,这里用来打来浏览器。
        p.s:如果setUp抛出异常,不会执行tearDown
        """
        self.browser = webdriver.Firefox()
        # 隐式等待:当我们想在网页上查找内容的时候,Selenium会等待三秒来显示内容
        self.browser.implicitly_wait(3)

    def tearDown(self):
        """setUp和tearDown是特殊的方法,分别在各测试方之前和之后运行,这里用来关闭浏览器"""
        self.browser.quit()

    def test_can_start_a_list_and_retrieve_it_later(self):
        """
        测试主要代码在这个方法中,一般以test_开头的都是测试方法,由测试运行程序运行。
        一般类中可以有多个测试方法
        """
        # 用户听说有一个很酷的在线待办事项应用
        # 用户看了这个应用的首页-网站应用
        self.browser.get('http://localhost:8000')

        # 用户注意到网页的标题和头部都有包含"To-Do"这个词
        # 使用self.assertIn代替assert编写测试断言,unittest提供了很多这种用于编写测试断言的辅助函数,如assertEqual、assertTrue等
        self.assertIn('To-Do', self.browser.title)
        # 不管怎样,self.fail都会失败,生成指定的错误消息,作者用这个方法提醒测试结束了。
        self.fail('Finish the test!')

        # 应用邀请他输入一个待办事项


if __name__ == '__main__':
    """
    Python脚本用这个语句检查自己是否在命令行中运行,而不是在其他脚本中导入
    我们调用unittest.main()启动unittest的测试运行程序,这个程序会在文件中自动查找测类和方法,然后运行。
    """
    # 禁止抛出ResourceWarning异常
    unittest.main(warnings='ignore')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值