1.unittest框架的基本了解
unittest是Python的单元测试,他提供了创建测试用例,测试套件以及批量执行的方案,unittest在安装Python以后就可以自带使用了,直接inport unittest就可以使用了。
unittest也是可以对程序最小模块的一种敏捷化的测试,在自动化测试中,我们虽然不需要做白盒测试,但是必须知道所使用语言的单元测试框架,利用单元测试框架,创建一个类,该类继承unittest的TestCase,这样就可以把每个case看成是一个最小的单元,由测试容器组织起来,到时候直接执行,同时引入测试报告;
unittest各组件的关系为:
- test fixture:初始化和清理测试环境,比如创建临时的数据库,文件和目录等,其中setUp()和setDown()是最常用的方法;
- test case:单元测试用例,TestCase是编写单元测试用例最常用的类;
- test suite:单元测试用例的集合,TestSuite是最常用的类;
- test runner:执行单元测试
- test report:生成测试报告
# -*- coding:utf-8 -*-
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import unittest
import time
class Baidu1(unittest.TestCase):
# 初始化环境
def setUp(self):
# print("setUp方法")
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = "https://www.baidu.com/"
self.driver.set_window_size(800,800)
self.verificationErrors = []
self.accept_next_alert = True
# 清除环境(不管它写在前还是后,他都是在测试用例执行完之后执行)
def tearDown(self):
# print("tearDown方法")
self.driver.quit()
self.assertEqual([],self.verificationErrors)
# 测试用例,必须以test开头
def test_baidusearch(self):
driver = self.driver
driver.get(self.base_url)
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys(u"测试开发")
driver.find_element_by_id("su").click()
time.sleep(8)
# 判断element是否存在,可删除
def is_element_parsent(self,how,what):
try: self.driver.find_element(by=how,value=what)
except NoSuchElementException as e: return False
return True
# 判断alert是否存在,可删除
def is_alert_present(self):
try: self.driver.switch_to.alert
except NoAlertPresentException as e: return False
return True
# 关闭alert,可删除
def close_alert_and_get_its_text(self):
try:
alert = self.driver.switch_to.alert
alert_text = alert.text
if self.accept_next_alert:
alert.accept()
else:
alert.dismiss()
return alert_text
finally: self.accept_next_alert = True
if __name__ == "__main__":
# 执行用例
unittest.main()
注:可以在mian里面增加verbosity参数,例如unittest.main(verbosity=2),在main中假如verbosity=2,这样测试结果会显示的更加详细;
这里的verbosity是一个选项,表示测试结果的信息复杂度,有三个值:
- 0(静默模式):你只能获得总的测试用例数和总的结果,比如总共100个,失败20,成功80
- 1(默认模式):非常类似静默模式只是在每个成功的用例前面有个“.” 。每个失败的用例前面有个“F”
- 2(详细模式):测试结果会显示每个测试用例的所有相关的信息
2.批量执行脚本
构建测试用例
完整的单元测试很少执行一个测试用例,通常需要编写多个测试用例才能对某一个软件功能进行比较完整的测试,这些相关的测试用例称为一个测试用例集&