打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python单元测试框架-UnitTest以及测试报告
时间主题
9.4(周三)20:00python单元测试框架
在周三的公众号文中,芒果给大家提前剧透了分层自动化测试过程中最重要的一环——单元测试。晚上的测试运维直播课程中,芒果带着大家一起了解了Python的单元测试框架——UnitTest,这里我们来做个小总结。
UnitTest介绍先来回顾一下单元测试的概念:指对软件中最小的可测试单元进行检查和验证,一般需要借助单元测试框架,如java的Junit、TestNG,python的unittest等。
再来看看UnitTest:
unittest是Python的内建模块,是Python单元测试的事实标准。 unittest不仅可以适用于单元测试,还可以适用web自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果。
几个概念
在开始使用UnitTest执行单元测试之前我们先了解几个概念:
test case:测试用例,可以通过创建unitest.TestCase类的子类创建一个测试用例。
test fixture:测试夹具,包含执行测试用例前的测试准备工作、测试用例执行后的清理工作(分别对应TestCase中的setUp()和tearDown()方法),测试准备和测试清理的目的是保证每个测试用例执行前后的系统状态一致。
test suite:测试套件,是测试用例、测试套件或者两者的集合,用来将有关联的测试项打包。
test runner:负责执行测试并将结果展示给用户,可以展示图形或文字形式(unittest.TextTestRunner)的结果,或者返回一个错误码标识测试用例的执行结果。testrunner提供了一个方法run(),接受一个unittest.TestSuite或unittest.TestCase实例作为参数,执行对应测试项目后返回测试结果unittest.TestResult对象。
UnitTest处理流程在对于几个基本的概念有所了解之后,我们一起来看看UnitTest处理流程是如何进行的:
使用unitest.TestCase类的子类创建一个测试用例类,其中可以包含多个测试用例,并且利用estCase中的setUp、tearDown、setUpClass、tearDownClass等方法处理好初始化以及环境清理工作。
#被测试函数-腾讯课程课程搜索测试
def courseSearch(driver,searchKey):
#打开腾讯课堂
driver.get("https://ke.qq.com/")
#搜索对应课程
driver.find_element_by_id("js_keyword").send_keys(searchKey)
time.sleep(2)
driver.find_element_by_id("js_search").click()
time.sleep(2)
#查询结果
keyElement = driver.find_element_by_css_selector("div.kw-outer>span.bold")
#对比实际结果与预期结果
if keyElement.text.lower() == searchKey.lower():
return True
else:
return False
#测试用例类
class CourseSearchTest(unittest.TestCase):
#环境构建-启动浏览器
def setUp(self):
self.driver = webdriver.Chrome()
#第一个测试用例
def test_01(self):
result = courseSearch(self.driver, "testops")
self.add_img()
self.assertTrue(result)
#print(result)
#第二个测试用例
def test_02(self):
result = courseSearch(self.driver, "软件测试")
self.add_img()
self.assertTrue(result)
#print(result)
#环境清理-关闭浏览器
def tearDown(self):
self.driver.quit()
然后就是用例的加载问题了(当然UnitTest的用例加载方式有更多,这里仅仅提供几种简单的加载方式):
#最简单的用例加载与执行
unittest.main()
#用例加载方式一
suite = unittest.TestSuite()
suite.addTest(CourseSearchTest("test_01"))
suite.addTest(CourseSearchTest("test_02"))
# 用例加载方式二
suite = unittest.TestSuite()
suite.addTest(unittest.TestLoader().loadTestsFromTestCase(CourseSearchTest))
#用例加载方式三
suite = unittest.TestSuite()
tests = ["test_course_search.CourseSearchTest.test_01",
"test_course_search.CourseSearchTest.test_02"]
suite.addTest(unittest.TestLoader().loadTestsFromNames(tests))
#用例加载方式四
suite = unittest.defaultTestLoader.discover(os.getcwd(),pattern="test_course_search*.py")
接着是执行,一般使用UnitTest所带的TextTestRunner处理执行,它会在执行结束之后给TestResult赋值,我们可以通过TestResult来获取相关结果。
#执行用例
unittest.TextTestRunner().run(suite)
测试报告以及其优化当然除了可以根据TestResult查看测试结果,我们还可以利用扩展模块HTMLTestRunner类来生成测试HTML版的测试报告。
#HTML测试报告
fp = open("restult_course_search.html","wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=fp,verbosity=2,
title="腾讯课堂课程搜索测试",
description="课程搜索以及结果判断")
runner.run(suite)
这里芒果顺便给大家介绍一个开源的优化版测试报告HTMLTestRunner_cn。
GitHub地址:
https://github.com/GoverSky/HTMLTestRunner_cn
后续的啰啰嗦嗦当然除了课程内容除了这些基本的介绍,芒果还给大家介绍了,关于UnitTest各种断言方法、用例过滤方式、Django项目的单元测试,以及关于优化版的测试报告的使用。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
python unittest之加载及跳过测试方法和示例
python自动化测试—Python自动化框架及工具
Selenium2+python自动化51
测试驱动开发与Python
python从步兵到骑兵(四)
selenium+python自动化81-报告优化
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服