unittest 模块扩展功能测试

1、概念性扩展
功能测试 驱动真正的网页从用户角度查看应用
术语: 功能测试=验收测试=端到端测试 (也就是黑箱测试)这种测试对要测试的应用内部一无所知

测试功能可以写一个故事来达到他易读的目的
弄成一个应用需求和功能的方式展示给非程序员看
编写一个类似下面的故事test1 .py

#coding=utf-8
from selenium import webdriver
browser = webdriver.Firefox()
#老李听说有一个很酷的代办事项清单的应用
#他去看了这个应用的首页
browser.get('http://localhost:8000')
#他注意到这个网页的标题和头部都包含“To-to"这个词
assert 'To-to' in browser.title
#应用邀请他输入一个待办事项
#他在其中输入了”Buy peack feathers"(购买孔雀毛)
#他的爱好是使用假蝇做饵钓鱼

#按回车键页面更新了
#待办事项中显示“1:Buy peack feathers”

#页面中又显示了一个文本框,可以输入其他待办事项
#他输入了"use peacock feathers to make a fly”(使用孔雀毛做假饵)
#老李做事很有条理

#页面再次跟新,他的清单中显示了这两个待办事项

#老李想知道这个个网站是否会记住他的清单
#他看你到网站为他生成了一个唯一的Url
#而且页面中有一些文字解说这个功能
#他访问这个url ,发现他的待办事项还在

#他很满意,去睡觉了
browser.quit()

这个测试是预期失败的 结果
unittest 模块扩展功能测试
AssertionError 没啥用啥也没提示
写成assert ‘To-to’ in browser.title ,"Browser title was "+browser.title
结果就变成
返回了页面的标题
unittest 模块扩展功能测试
知识点:
webdriver的断言使用
assert 断言函数
如果你断言的 语句正确 则什么反应都没有
但是如果你出错之后 就会报出 AssertionError 并且错误可以自己填写

2、使用python库中的unittest 模块

#coding=utf-8
from selenium import webdriver
import unittest
class NewVisitorTest(unittest.TestCase):#测试组织成类的形式继承自 unittest.TestCase
        def  setUp(self):
               self.browser = webdriver.Firefox()
        def tearDown(self):
               self.browser.quit()

        def test_can_start_a_list(self):
#老王听说有一个待办事项的网站很好
#他去看了这个应用的首页
               self.browser.get("http://localhost:8000")
#他注意到这个首页的标题和头部包含“To-Do”
               self.assertIn("To-Do",self.browser.title)
               self.fail("Finish the test")
#应用邀请他输入一个待办事项
#接下来写的跟上一个test.py 一样的故事

if __name__=='__main__':
      unittest.main(warnings='ignore')     #

unittest 模块的使用
1.import unittest
2.定义一个继承自unittest.TestCase的测试用例类
3.定义setUp和tearDown,在每个测试用例前后做一些辅助工作。
这里呢我们使用这个方法开关闭浏览器,即使失败 也会关闭浏览器(当然了 如果setup抛出异常 teardown 不会运行了)
4.定义测试用例,名字以test开头。
5.一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。(这里使用了assertIn 进行断言测试 判断 a in b)
6.调用unittest.main()启动测试 warnings='ignore’作用是禁止抛出 ResourceWarning 异常
7.如果测试未通过,会输出相应的错误提示。如果测试全部通过则不显示任何东西,这时可以添加-v参数显示详细信息。
#有关 unittest 测试模块用例详细介绍请点击这个链接查看 这两个各有千秋
#https://blog.csdn.net/qq1124794084/article/details/51668672
#https://blog.csdn.net/sedulousaresy/article/details/38087929
结果
unittest 模块扩展功能测试

3、在git 中提交代码
git status 查看一下
git diff 对比一代码的变化下
git commit -a 自动添加已经追踪的文件(即已经提交的文件)的改动 哈哈改变了很多呀
unittest 模块扩展功能测试

4、TDD 概念
用户故事
从用户出发描述应用的运行
预期失败
意料之中的失败