python爬虫学习第三十八天

来源:互联网 发布:pslogo美工基础知识 编辑:程序博客网 时间:2024/05/14 05:50

今天的内容:用爬虫测试网站

测试&单元测试

测试和单元测试(unit test)这两个词基本可以看成是等价的。一般当程序员们说起“写测 试”时,他们真正的意思就是“写单元测试” 。而一些程序员提到写单元测试时,他们写 的就是某一种测试。

单元测试一般有如下的特点:

一个单元测试用于测试一个零件(component)功能的一个方面。通常,对于一个零件的所用功能的测试都放在一个类中好管理。
一个单元测试都可以完全独立地运行,一个单元测试需要的所有启动(setup)和卸载 (teardown)都必须通过这个单元测试本身去处理。换句话说,一个单元测试的运行只依赖于它自己,不能对其他的单元测试产生影响。
个单元测试通常至少包含一个断言(assertion) 。也有的单元测试在执行时每通过一项测试就抛出一个异常,当异常全部抛出时,单元测试成功,否则失败。
元测试与生产代码是分离的。随然它们需要导入然后在待测试的代码中使用,但是它 们一般被保留在独立的类和目录中。

python单元测试模块unittest

unittest是python的标准库,python安装后都会有。使用时需要import unittest并集成unittest.TestCase类。
• 为每个单元测试的开始和结束提供 setUp 和 tearDown 函数
• 提供不同类型的“断言”语句让测试成功或失败
• 把所有以 test_ 开头的函数当作单元测试运行,忽略不带 test_ 的函数

练习 验证计算2+2

import unittestclass TestAddition(unittest.TestCase):    def setUp(self):        print("Test begin!")        pass    def tearDown(self):        print("Test end")        pass    def test_twoSumTwo(self):        total = 2+2        self.assertEqual(first=4,second=total)        passif __name__ == '__main__':    unittest.main()

练习 测试网站(beautifulsoup+unittest)

import unittestfrom bs4 import BeautifulSoupfrom urllib.request import urlopenclass TestWikipedia(unittest.TestCase):    bsObj = None    def setUp(self):        global bsObj        url = "http://en.wikipedia.org/wiki/Monty_Python"        bsObj = BeautifulSoup(urlopen(url),"lxml")        pass    def test_webTitle(self):        global bsObj        title = bsObj.find("h1").get_text()        self.assertEqual(first="Monty Python",second = title)        pass    def test_webContent(self):        global bsObj        content = bsObj.find("div",{"id":"mw-content-text"})        self.assertIsNotNone(obj=content)        pass    def tearDown(self):        print("Test Over!")        passif __name__ == '__main__':    unittest.main()

过程,导入一个网站并判断标题是否为给定标题,指定内容是否存在
判断成功会在全部测试完成后向主屏幕打印“OK”,否则会在出错的测试处打印“F”并在运行后打印测试出错信息。
明天要写一个相对长一点的测试练习,今天刚刚看懂,先到这里啦,打卡~