Python网络数据之用爬虫测试网站|第11天

测试的简介;

Selenium单元测试和Python单元测试;

测试简介

运行一套测试方法能够保证你的代码按照既定的目标运行,不仅可以节约你的时间,减少你对bug 的忧虑,还可以让新版本升级变得更加简单。

单元测试的特点:

  1. 每个单元测试用于测试一个零件(component)功能的一个方面。
  2. 每个单元测试都可以完全独立地运行,一个单元测试需要的所有启动(setup)和卸载 (teardown)都必须通过这单元测试本身去处理。单元测试不能对其他测试造成干扰,而且不论按何种顺序排列,它们都必须能够正常地运行。
  3. 每个单元测试通常至少包含一个断言(assertion)。
  4. 单元测试与生产代码是分离的。

Python单元测试

Python的单元测试模块unittest,所有标准版Python安装后都有。例如:

1
2
3
4
5
6
7
8
9
10
11
12
import unittest

class TestAddition(unittest.TestCase):
def setUp(self):
print("Setting up the test")
def tearDown(self):
print("Tearing down the test")
def test_twoPlusTwo(self):
total = 2+2
self.assertEqual(4, total)
if __name__ == '__main__':
unittest.main()

setUp()tearDown()在每个测试的开始和结束都会运行一次,而不是把类中所有测试作为一个整体在开始或结束时各运行一次。

Selenium单元测试

Selenium 不要求单元测试必须是类的一个函数,它的 “断言”语句也不需要括号,而且测试通过的话不会有提示,只有当测试失败时才会产生信息提示:

1
2
3
4
driver = webdriver.PhantomJS()
driver.get("http://en.wikipedia.org/wiki/Monty_Python")
assert "Monty Python" in driver.title
driver.close()

Selenium 单元测试的时候需要比写 Python 单元测试更加随意,断言语句甚至可以整合到生产代码中,非常适合某些条件不能满足就中断代码的需求。

Python单元测试与Selenium单元测试的选择

Selenium 可以轻易地获取网站的信息,而单元测试可以评估这些信息是否满足通过测试的条件。因此,你没有理由拒绝把 Selenium 导入 Python的单元测试,两者组合是最佳拍档。

一分支持,也是鼓励!
0%